【问题标题】:Does the Fancybox instance need a reinitialise method?Fancybox 实例是否需要重新初始化方法?
【发布时间】:2015-05-13 08:18:04
【问题描述】:

从页面中删除一些项目后,我正尝试重新初始化 FancyBox 实例,但找不到任何可用的方法;或在操作 DOM 时自动重新初始化的任何选项。我错过了什么吗?

问题是,当我现在在使用 rel="group" 属性实例化的项目上单击箭头时,我仍然看到“已删除”的内容。

我在 jQuery 的 DOM Ready 上初始化 Fancybox,如下所示:

$(".fancybox").fancybox();

HTML 元素如下所示:

<a class="fancybox" rel="group" href="http://localhost/myimages/image-1.jpg"></a>
<a class="fancybox" rel="group" href="http://localhost/myimages/image-2.jpg"></a>

我正在使用 FancyBox 第 2 版。有什么建议或 cmets 吗?

【问题讨论】:

  • 理论上,由于fancybox v2.x支持live动态添加/删除内容的方法,所以删除内容后你不需要做任何事情,但这取决于你对“删除内容”的理解" 内容和你是怎么做的jsfiddle.net/9g1onkvk
  • @JFK ,我实际上使用 AJAX 删除并添加了新项目。在我看来,使用 rel="group" 属性并没有更新我创建的环境中项目的“索引”。添加/删除多个项目后,单击导航按钮时它没有按时间顺序“页面”低谷。但是,您的 JSFiddle 使用 rel="gallery" 属性确实可以完成我需要它做的事情。谢谢。

标签: jquery fancybox


【解决方案1】:

Fancybox 2 不包含任何销毁或更新方法。

因此,您需要再次触发 Fancybox 方法。但请注意,在重新初始化 Fancybox 之前,您必须先使用 .unbind 方法并删除元素上的所有事件。请参阅 - How to destroy Fancybox? 了解如何模拟销毁方法。

简短的回答,更新你的 DOM,取消绑定所有方法上的事件,最后通过再次调用 Fancybox 方法重新绑定。

【讨论】:

  • 理论上,你不需要在删除内容后做任何事情,因为fancybox v2.x支持live动态添加/删除内容的方法,所以再次触发fancybox方法是多余的jsfiddle.net/9g1onkvk
  • @JFK 我应该先用小提琴测试我的理论。感谢分享,我今天学到了一些新东西:)
猜你喜欢
  • 2017-07-06
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多