7

我有一个奇怪的问题,我有通过 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');
    }

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

提前致谢。缺口

4

4 回答 4

13

如果您包含该属性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/

于 2012-12-17T02:15:38.250 回答
6

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

但是,您也可以在 dom 级别销毁 Fancybox,无论live参数如何,通过执行以下操作:

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

或者

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


JSFiddle

查看此JSFiddle以供参考。

于 2014-12-06T14:55:34.303 回答
0

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

jQuery('a').unbind('click.fb').removeData('fancybox');
于 2012-12-24T17:26:59.903 回答
0

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

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

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

再次感谢。

于 2012-12-27T10:33:30.633 回答