我遇到一个奇怪的问题,我有一些代码通过Ajax提取内容,然后将Fancybox(2)绑定(bind)到某些元素。问题是,当我“刷新”此页面时,我调用了再次拉动并绑定(bind)Fancybox的相同函数。

在更改为Fancybox 2之前,一直有效的常规方法是取消绑定(bind)元素并重新绑定(bind)它们。但是,这似乎不适用于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');
    }

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

提前致谢。
缺口

最佳答案

如果包含live:false属性,则可以使用.off()从元素中删除处理程序。
在仔细研究了源代码之后,我还发现,如果要专门定位特定事件,则该特定事件为click.fb-start
例如:


仅供引用,在文档中它说了有关live的以下内容:

jsFiddle
这是一个jsFiddle演示
http://jsfiddle.net/DigitalBiscuits/DBvt7/211/

关于fancybox - 取消绑定(bind)/销毁fancybox 2事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13526599/

10-13 03:45