解除绑定/销毁fancybox 2事件
我遇到了一个奇怪的问题,我的代码通过ajax提取内容,然后将Fancybox(2)绑定到某些元素。问题是,当我“刷新”这个页面时,我再次调用拉入并绑定Fancybox的相同函数 在我改为Fancybox 2之前,我一直在使用的常规方法是解除元素绑定并重新绑定它们。然而,这似乎不适用于FB2 我尝试了以下方法:解除绑定/销毁fancybox 2事件,fancybox,destroy,fancybox-2,unbind,Fancybox,Destroy,Fancybox 2,Unbind,我遇到了一个奇怪的问题,我的代码通过ajax提取内容,然后将Fancybox(2)绑定到某些元素。问题是,当我“刷新”这个页面时,我再次调用拉入并绑定Fancybox的相同函数 在我改为Fancybox 2之前,我一直在使用的常规方法是解除元素绑定并重新绑定它们。然而,这似乎不适用于FB2 我尝试了以下方法: $('.tool_button').unbind('click.fb'); $('.tool_button').unbind('click'); $('.tool_button').unb
$('.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):
如果有人能在这里帮忙,我将不胜感激
提前谢谢。
Nick如果包含属性
live:false
,则可以使用.off()
在深入研究源代码之后,我还发现,如果您想专门针对特定事件,则特定事件是单击.fb start
例如:
仅供参考,在文档中,它说明了以下关于live
:
live:如果设置为true,fancyBox将使用“live”来激活单击事件。着手
“false”,如果您只需要应用于当前集合,例如,如果
使用类似-$(“#page”).children().filter('a').eq(0.fancybox()
JSFIDLE
下面是一个JSFIDLE演示
您可以使用此代码销毁链接上的fancybox功能:
jQuery('a').unbind('click.fb').removeData('fancybox');
感谢您的回复,我没有测试上述内容,我使用了不同的方法来解决问题 我所做的不是使用默认的Fancybox功能,而是为需要Fancybox的地方创建了函数,并在每种情况下手动调用Fancybox,这样就不会绑定事件 这不是最好的方法,上面的方法可能更好,但我会在新的一年里测试它:)
再次感谢。我知道这是一个旧线程,但我只是想确认OAC设计绝对正确: 只有当
live
参数设置为false
时,才能解除绑定.fancybox
链接
但是,您也可以在dom级别销毁Fancybox,而不考虑live
参数,方法是:
$(文档).unbind(“click.fb start”)代码>
或
$(document).off(“click.fb start”)代码>
JSFIDLE
查看此文件以供参考。我遇到了完全相同的问题。我创建了一个jsFiddle,让事情回到基础,并尝试各种方法。到目前为止运气不好,你应该将此标记为答案。我在翻阅了源代码之后,直到我要回答关于fb启动事件的问题时才明白这一点。这是正确的答案。非常感谢@oacdesignsI也有同样的问题。现场设置:false对我有效,无需解除活动绑定。
$(".fancybox").attr('rel', 'gallery').fancybox({live: false});
//remove click handler
$('.fancybox').off("click.fb-start");
jQuery('a').unbind('click.fb').removeData('fancybox');