【问题标题】:fancybox 3 selector for dynamically added elements and multiple gallery用于动态添加元素和多个画廊的 fancybox 3 选择器
【发布时间】:2023-03-03 08:05:23
【问题描述】:

在fancybox v.3 的文档中说“有时您可能需要将fancybox 绑定到动态添加的元素。使用选择器...”。一切都很好,但我需要禁用画廊的自动分组并自定义多个画廊选择器。

默认行为:

$().fancybox({
    selector : '[data-fancybox]:visible'
});

所有带有 data-fancybox 的可见链接都将合并到一个画廊中。 我需要根据data-fancybox的值创建不同的gallery,比如data-fancybox="gallery1"、data-fancybox="gallery2"等。同时fancybox要继续监听动态添加的内容。

你能帮帮我吗?

【问题讨论】:

  • 您能否在您的问题中提供所需的行为、特定问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。”
  • @Artem,我尽可能地扩展了问题的描述。
  • 你好@MGreen 从所有链接中删除data-fancybox 以及使用其他选择器而不是默认选择器手动初始化fancybox 怎么样? :)
  • 嘿。不,我试过了,没用。 :)

标签: jquery fancybox-3


【解决方案1】:

这实际上是一个有效的问题,因为 v3 的早期版本就像您描述的那样工作 - 项目按 data-fancybox 属性分组。但是,在实践中,这引起了一些混乱,因为data-fancybox属性默认添加了点击事件。

但是,不要害怕创建自己的触发器函数,它就这么简单。例如,您可以选择使用data-group 属性进行分组:

$(document).on('click', '[data-group]', function() {
  var $this = $(this);
  var group = $('[data-group="' + $this.data('group') + '"]');

  $.fancybox.open(group, {
    // Put your options here, for example:
    thumbs : {
      autoStart : true
    }
  }, group.index($this));

  return false;
});

演示 - https://codepen.io/anon/pen/ZqBJyj?editors=1010

【讨论】:

  • 非常感谢。很高兴听到脚本作者的回答。我做出了类似的决定,但认为有更简单的方法,所以我在这里问。
  • 哇,虽然这是一个旧答案。这对我有用! (V3) 帮了我很多忙。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多