问题 如何摧毁Fancybox?


我想要毁灭 的fancybox。我还没有找到任何方法来做到这一点 文件。如何在初始化后销毁它?

这不起作用:

$("a").unbind('fancybox').unbind('click');

测试代码: http://jsfiddle.net/martinba/yy3cw/2/

我使用当前版本2.1.4。


1791
2018-03-01 09:34


起源

毁灭是什么意思?你想隐藏这些吗? - Manoz
我需要它回到标准行为:点击<a href="..."> ... </a>链接,浏览器将打开它。没有Fancybox内部窗口,就像没有javascript一样。 - Martin


答案:


为了取消绑定fancybox,你必须取消绑定事件 fb-start 命名空间 document

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

虽然,我不知道为什么开发人员如此不明显。

http://jsfiddle.net/dfsq/yy3cw/16/


13
2018-03-01 09:56



看起来很有效谢谢! - Martin
如果我的页面上有多个fancybox实例,比如图像库 - 是否有任何方法可以解除特定图像的绑定而不是整个事物? - webdevbyjoss
@Passer我建议你用你的代码发一个新答案。 - dfsq
好的,谢谢@dfsq,完成了。 - Passer by


试着打电话:

.unbind('click.fb') 取消绑定fancybox。

喜欢:

$('.group').unbind('click.fb')

2
2018-03-01 09:45



不幸的是,它不起作用。这里是: jsfiddle.net/martinba/yy3cw/11 单击init按钮然后销毁。 “FancyDevil”仍在那里。 - Martin
这对我有用。 'click.fb-start'没有。我想这取决于FB版本。 - igasparetto
这似乎适用于fancybox 1.34 - Hutch


您可以通过运行来取消绑定每个花哨的框:

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

或者,如果您需要取消绑定特定选择器,您可以取消它:

var selector = 'a.my-fancy-box';
selector = selector + ":not('.fancybox-item, .fancybox-nav')";
$(document).undelegate(selector, 'click.fb-start');

或者:

// Bind
$('a.my-fancy-box').fancybox({live: false});

// Unbind
$('a.my-fancy-box').unbind('click.fb');

1
2017-11-07 11:13





正如前面提到的那样: $(document).unbind('click.fb-start'); 但您也可能希望将此选项添加到fancybox init调用: live:false


0
2017-09-23 04:42