解除绑定/销毁的fancybox 2个事件(Unbind/Destroy fancybox 2 ev

2019-07-04 02:13发布

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

如果有人能够帮助这将是非常赞赏。

提前致谢。 缺口

Answer 1:

如果包括属性live:false ,那么你就可以使用您的元素删除处理程序.off()

通过源代码挖后,我还发现,特殊事件是click.fb-start ,如果你想专门针对它。

例如:

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

FYI在文档它说以下有关live

住:如果设置为true,使用的fancybox“活”到assing click事件。 设置为 “假”,如果您需要仅适用于当前的集合,例如,如果使用类似 - $( “#page”)。孩子()过滤器( 'A')EQ(0).fancybox()。 ;

的jsfiddle

下面是一个示范的jsfiddle

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



Answer 2:

我知道这是一个古老的线程,但只是想确认OAC外观设计是绝对正确的:解除绑定.fancybox链接只有在工作live参数设置为false

不过, 您也可以在DOM级别摧毁的fancybox,不管的live参数,这样做:

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

要么

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


的jsfiddle

看看这个的jsfiddle以供参考。



Answer 3:

您可以使用此代码来摧毁链接的fancybox功能:

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


Answer 4:

感谢您的答复,我没有测试上面,我用不同的方法来解决这个问题。

我所做的是不是用我创造了在那里我需要的fancybox职能及其因此不绑定事件每种情况下手动叫的fancybox默认的fancybox功能。

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

再次感谢。



文章来源: Unbind/Destroy fancybox 2 events