views:

166

answers:

1

Okay, I have a map of the country, the user clicks on their state, and a bunch of suppliers is loaded through jQuery via a page like this:

   $('#sa').click(function () {
    $('#mapimg').hide();
    $('<div id="info">&nbsp;</div>').load('dealers.php?state=sa', function () {  
    $(this).hide()
     .appendTo('#dealers')
      .slideDown(3000);
     });

Then when it displays the deals, i want the user to be able to click the 'contact us' next to each dealer and have a modal jump up with a contact form in it. But it doesnt seem to be firing. on clicking just does nothing.

Here is the jQuery code to trigger the modal box:

$(document).ready(function() {  

//select all the a tag with name equal to modal
 $('a').click(function(e) { //I have tried everything here, div, a[name=something], li, etc
 //Cancel the link behavior
 e.preventDefault();

 //Get the A tag
 var id = $(this).attr('href');

 //Get the screen height and width
 var maskHeight = $(document).height();
 var maskWidth = $(window).width();

 //Set heigth and width to mask to fill up the whole screen
 $('#mask').css({'width':maskWidth,'height':maskHeight});

 //transition effect  
 $('#mask').fadeIn(1000); 
 $('#mask').fadeTo("slow",0.8); 

 //Get the window height and width
 var winH = $(window).height();
 var winW = $(window).width();

 //Set the popup window to center
 $(id).css('top',  winH/2-$(id).height()/2);
 $(id).css('left', winW/2-$(id).width()/2);

 //transition effect
 $(id).fadeIn(2000); 

});

//if close button is clicked
$('.window .close').click(function (e) {
 //Cancel the link behavior
 e.preventDefault();

 $('#mask').hide();
 $('.window').hide();
});  

//if mask is clicked
$('#mask').click(function () {
 $(this).hide();
 $('.window').hide();
});

});

The following code works outside the loaded content, but not inside. Anyone got any ideas?

<a href='#dialog2' class='openmodal'>Open Modal Box</a>

THanks in advance!

+2  A: 

with the dynamically loaded content you just need to juse live bindings. Please use jQuery live events. Suppose contact link has class "clsContact" then you can put dialog opening login in function "OpenModal" and bind links like this:

$("a.clsContact").live('click', OpenModal);
TheVillageIdiot
worked great. thanks! just a side note: that live was not implemented until jQuery v1.3.. this caught me out for a little while, but got it sorted in the end =]
Ryan