解除绑定/销毁fancybox 2事件

解除绑定/销毁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

我遇到了一个奇怪的问题,我的代码通过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):

如果有人能在这里帮忙,我将不胜感激

提前谢谢。
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');