解除/销毁fancybox 2事件

Nic*_*ick 7 fancybox unbind destroy fancybox-2

我有一个奇怪的问题,我有代码通过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();
Run Code Online (Sandbox Code Playgroud)

我确实注意到源文件中的以下内容可能有用(起始行652):

// Unbind the keyboard / clicking actions
    unbindEvents: function () {
        if (F.wrap && isQuery(F.wrap)) {
            F.wrap.unbind('.fb');
        }

        D.unbind('.fb');
        W.unbind('.fb');
    }
Run Code Online (Sandbox Code Playgroud)

如果有人可以在这里提供帮助,我将不胜感激.

提前致谢.缺口

OAC*_*gns 13

如果包含该属性,live:false则可以使用从元素中删除处理程序.off()

在深入挖掘源代码之后,我还发现特定事件是click.fb-start,如果你想专门针对它.

例如:

$(".fancybox").attr('rel', 'gallery').fancybox({live: false});
//remove click handler
$('.fancybox').off("click.fb-start");
Run Code Online (Sandbox Code Playgroud)

仅供参考在文档中,它说如下live:

live:如果设置为true,fancyBox使用"live"来协助点击事件.设置为"false",如果您只需要应用于当前集合,例如,如果使用类似 - $("#page").childrenren().filter('a').eq(0).fancybox() ;

的jsfiddle

这是一个jsFiddle演示

http://jsfiddle.net/DigitalBiscuits/DBvt7/211/


Mar*_*tus 6

我知道这是一个旧线程,但只是想确认OAC Designs是绝对正确的:取消绑定.fancybox链接仅在live参数设置为时才有效false.

但是,您也可以live通过执行以下操作来破坏dom级别的Fancybox,无论参数如何:

$(document).unbind("click.fb-start");

要么

$(document).off("click.fb-start");


的jsfiddle

查看此JSFiddle以供参考.