Najprostszym sposobem wiązania fancybox (v1.3.x) dynamicznie dodatkowe elementy są:
1: Uaktualnienie do jQuery v1.7.x (jeśli jeszcze nie)
2: Ustaw swój skrypt używając jQuery API on()
+ zdarzenie focusin
.
Aby pracować trzeba znaleźć element parent
swoich elementów z class="ajaxFancyBox"
wg kodu powyżej (lub parent
z parent
jak jest to potrzebne) i dołączyć jQuery on()
do niego tak na przykład, mając tę html:
<div id="container">
<a class="ajaxFancyBox" href="image01.jpg">open image 01</a>
<a class="ajaxFancyBox" href="image02.jpg">open image 02</a>
</div>
.. zastosujemy on()
i focusin
zdarzenie elementu z id="container"
(The parent
), jak w przykładzie powyżej, jak:
$("#container").on("focusin", function(){
$("a.ajaxFancyBox").fancybox({
// fancybox API options here
'padding': 0
}); // fancybox
}); // on
Możesz zastosować dowolną opcję Fantombox, jeśli potrzebujesz. Dodatkowo mogą mieć różne scenariusze dla różnych typów treści (wewnątrz metody on()
), takich jak:
$("#container").on("focusin", function(){
$("a.ajaxFancyBox").fancybox({
// fancybox API options here
'padding': 0
}); // fancybox
$("a.iframeFancyBox").fancybox({
// fancybox API options here
'padding': 0,
'width': 640,
'height': 320,
'type': 'iframe'
}); // fancybox
}); // on
WAŻNE: powyższy przykład nie będzie działać tak na Chrome. obejście jest dodanie atrybutu tabindex
do wszystkich elementów powiązanych z fancybox jak
<div id="container">
<a tabindex="1" class="ajaxFancyBox" href="image01.jpg">open image 01</a>
<a tabindex="1" class="ajaxFancyBox" href="image02.jpg">open image 02</a>
</div>
, który rozwiązuje ten problem i będzie działać (o ile wiem) w tym w większości przeglądarek IE7 +.
See my demo page here
UPDATE: 07 marca 2012.
powiedziano mi, że ta metoda działa tylko podczas dodawania nowych treści na stronie, ale nie po wymianie zawartości strony.
Metoda faktycznie działa w jednym z dwóch wymienionych powyżej scenariuszy. Upewnij się tylko, że nowa zastępowana zawartość jest również ładowana do kontenera, w którym zastosowano metodę .on()
.
See demo
tabindex
obejście dla Chrome ma również zastosowanie.
mi odpowiedział na pytanie wyglądać ten http://stackoverflow.com/questions/3574100/appending-dynamically-generated-h tml-using-jquery-does-not-play-well-with-fancyb –