【问题标题】:Unbind/Destroy fancybox 2 events解除绑定/销毁 fancybox 2 事件
【发布时间】:2012-11-11 16:07:43
【问题描述】:

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

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

提前致谢。 尼克

【问题讨论】:

标签: fancybox destroy fancybox-2 unbind


【解决方案1】:

如果您包含属性 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",如果您只需要应用于当前集合,例如,如果 使用类似 - $( "#page" ).children().filter('a').eq(0).fancybox();

jsFiddle

这是一个 jsFiddle 演示

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

【讨论】:

  • 您应该将此标记为答案。直到我要回答关于 fb-start 事件的问题,在挖掘源代码之后,我才明白这一点。
  • 这是正确的答案。非常感谢@oacdesigns
  • 我遇到了同样的问题。设置 live: false 为我工作,无需取消绑定事件。
【解决方案2】:

您可以使用此代码破坏链接上的 fancybox 功能:

jQuery('a').unbind('click.fb').removeData('fancybox');

【讨论】:

    【解决方案3】:

    感谢您的回复,我没有测试过以上,我使用了不同的方法来解决问题。

    我所做的不是使用默认的 Fancybox 功能,而是为我需要 Fancybox 的地方创建了函数,并在每种情况下手动调用了 Fancybox,因此没有绑定事件。

    这不是最好的方法,上面的方法可能更好,但我会在新的一年里测试它:)

    再次感谢。

    【讨论】:

      【解决方案4】:

      我知道这是一个旧线程,但只是想确认 OAC Designs 绝对正确: 仅当 live 参数设置为 false 时,才能解除绑定 .fancybox 链接。

      但是,您也可以在 dom 级别销毁 Fancybox,无论 live 参数如何,都可以这样做:

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

      或者

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


      JSFiddle

      查看此JSFiddle 以供参考。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-15
        • 1970-01-01
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 2018-03-23
        • 2012-10-21
        • 2012-10-24
        相关资源
        最近更新 更多