Ryan
Ryan

Reputation: 1184

jQuery loaded data not firing modal like it should

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 doesn't 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. Did anyone get any ideas?

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

Upvotes: 1

Views: 452

Answers (1)

TheVillageIdiot
TheVillageIdiot

Reputation: 40507

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);

Upvotes: 2

Related Questions