我遇到一个奇怪的问题,我的代码通过ajax提取内容,然后将Fancybox(2)绑定到某些元素。问题是,当我“刷新”这个页面时,我会调用相同的函数来再次拉动和绑定Fancybox。
直到我改为Fancybox 2之前一直在努力的正常方法是取消绑定元素并重新绑定它们。然而,这似乎与FB2无关。
我尝试了以下内容:
$('.tool_button').unbind('click.fb');
$('.tool_button').unbind('click');
$('.tool_button').unbind();
$('.tool_button').off('click.fb');
$('.tool_button').off('click');
$('.tool_button').off();
我确实注意到源文件中可能有用的内容(起始行652):
// Unbind the keyboard / clicking actions
unbindEvents: function () {
if (F.wrap && isQuery(F.wrap)) {
F.wrap.unbind('.fb');
}
D.unbind('.fb');
W.unbind('.fb');
}
如果有人可以在这里提供帮助,我们将不胜感激。
提前致谢。 尼克
答案 0 :(得分:13)
如果您添加了属性live:false
,则可以使用.off()
在深入挖掘源代码之后,我还发现特定事件是click.fb-start
,如果你想专门针对它。
例如:
$(".fancybox").attr('rel', 'gallery').fancybox({live: false}); //remove click handler $('.fancybox').off("click.fb-start");
仅供参考在文档中,它说明了以下live
:
live:如果设置为true,fancyBox会使用“live”来协助点击事件。调成 “false”,如果您只需要申请当前收集,例如if 使用类似 - $(“#page”)。children()。filter('a')。eq(0).fancybox();
这是一个jsFiddle演示
答案 1 :(得分:6)
我知道这是一个旧线程,但只是想确认OAC Designs是绝对正确的:
取消绑定.fancybox
链接仅在live
参数设置为false
时有效。
但是,无论live
参数如何,你还可以在dom级别销毁Fancybox:
$(document).unbind("click.fb-start");
或者
$(document).off("click.fb-start");
请查看此JSFiddle以供参考。
答案 2 :(得分:0)
您可以使用此代码来破坏链接上的fancybox功能:
jQuery('a').unbind('click.fb').removeData('fancybox');
答案 3 :(得分:0)
感谢您的回复,我没有对上述内容进行测试,我采用了不同的方法来解决问题。
我所做的不是使用默认的Fancybox功能,而是创建了我需要Fancybox的功能,并在每种情况下手动调用Fancybox,因此没有绑定事件。
这不是最好的方法,上面可能会更好,但我会在新的一年里测试这个:)
再次感谢。