将fancybox (v1.3.x) 绑定到动态添加元素的最简单方法是:
1:升级到 jQuery v1.7.x(如果你还没有)
2:使用jQuery APIon()
+focusin
事件设置您的脚本。
为了使它工作,你需要找到parent
你的元素与元素class="ajaxFancyBox"
按你上面的代码(或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"
(the 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+)中工作(据我所知)。
在此处查看我的演示页面
更新:2012 年 3 月 7 日。
有人告诉我,此方法仅在向页面添加新内容时有效,而在替换页面内容时无效。
该方法实际上适用于上述两种情况中的任何一种。只需确保新的替换内容也加载到您应用该.on()
方法的容器中。
看演示
tabindex
Chrome的解决方法也适用。