将fancybox(v1.3.x)绑定到动态添加的元素最简单的方法是:
1:升级到jQuery的v1.7.x(如果你还没有)
2:设置使用jQuery API on()
+的focusin
事件脚本。
为了使它工作,你需要找到class="ajaxFancyBox"
你的元素parent
元素按照你上面的代码(或根据你的需要了parent
的parent
)和附加jQuery on()
它,因此例如,具有这个网站:
<div id="container">
<a class="ajaxFancyBox" href="image01.jpg">open image 01</a>
<a class="ajaxFancyBox" href="image02.jpg">open image 02</a>
</div>
..我们将应用on()
和focusin
事件的目标元素与id="container"
(所述parent
)如在上面的例子中,如:
$("#container").on("focusin", function(){
$("a.ajaxFancyBox").fancybox({
// fancybox API options here
'padding': 0
}); // fancybox
}); // on
您可以根据需要应用任何fancybox选项。此外,你可以有一个像针对不同类型的内容(on()
方法中)不同的脚本:
$("#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
重要:上面的例子中不会像在Chrome浏览器。该解决方法是将tabindex
属性添加到所有绑定的元素来的fancybox像
<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>
,解决了该问题,并将工作(据我所知)在大多数浏览器IE7,包括+。
See my demo page here
更新:3月07日,2012年
有人告诉我,当你添加新的内容页,但不是当你更换页面的内容,此方法只适用。
该方法实际上适用于上述两种情况之一。只要确保新的替换内容也加载到应用.on()
方法的容器中。
See demo
的tabindex
解决方法为Chrome也同样适用。
来源
2012-01-31 17:42:57
JFK
我回答了这个问题看这个 http://stackoverflow.com/questions/3574100/appending-dynamically-generated-h tml-using-jquery-does-play-play-well-with-fancyb – 2013-06-20 11:51:25