2010-05-05 3 views
5

Ich versuche Fancy Box Links zu binden, so dass, wenn die neuen Links erstellt werden, werden sie immer noch funktionieren. Ich habe ein paar andere Fragen hier gesehen, aber nicht wirklich beantwortet. Das versuche ich zu tun.Verwenden jQuery Fancybox (Leuchtkasten Typ-Dialog) mit dynamisch geladenen Links

Dies funktioniert gut, aber wenn die Seite oder Links von Ajax neu geladen werden, funktioniert es nicht. Ich habe versucht, Live() verwenden, aber ich konnte es nicht zur Arbeit kommen. Wie bindet man sich neu ein oder implementiert es auf fancybox? Irgendeine Möglichkeit, dies zu tun? Dank

Antwort

11

ich persönlich jQuery's live function verwenden.

 
jQuery("a#[id^='domore_']").live('click', function(){ 
    jQuery.fancybox({ 
     'autoDimensions' : false, 
     'width'   : 'auto', 
     'height'   : 'auto', 
     'href'   : $(this).attr('href') 
    }); 
    return false; 
}); 

Hinweis: wirklich nicht zu Ihrem Problem verwandt, aber seien Sie gewarnt, dass jQuery 1.4.2 ein bisschen ein Problem hat, wenn das Änderungsereignis ein ausgesuchtes in IE aber 1.4.1 scheint in Ordnung zu sein jetzt. (Suche "live() Methode für 'ändern' Ereignis in Jquery 1.4.2 für IE gebrochen (in 1.4.1 gearbeitet)" auf Google, kann ich den Link nicht hinzufügen, wie ich neu bin)

Hoffe es hilft

+0

Ja, danke, ich habe das Leben verwendet und fand, dass Sie 1.4.1 wegen IE brauchen. Was für ein Junk-Browser. Wie auch immer, thx für die Info, ist das, was ich mit hatte, ging. BTW Ihre Antwort war total verwandt, das ist, was ich tun wollte, aber am Ende herauszufinden, es war IE und 1.4.2 das Problem war. :) –

+0

Das ist super btw hilfreich. Ich habe mindestens 3 Mal zurückgerufen –

+0

THanks Kerl sehr hilfreich –

1

Sie werden wahrscheinlich den faceybox Funktionsaufruf in Ihrer Ajax-Erfolg/Callback-Methode umfassen müssen:

$.ajax({ 
    url: 'test.html', 
    success: function(data) { 
    $('.result') 
    .html(data) 
    .find("a#[id^='domore_']").fancybox({ 
     'autoDimensions' : false, 
     'width'   : 'auto', 
     'height'   : 'auto' 
    }); 
    } 
}); 
2

Sie können dieses verwenden. Es funktionierte für mich