【问题标题】:jQuery gallery not triggering after Ajax在 Ajax 之后没有触发 jQuery 库
【发布时间】:2015-09-22 14:16:09
【问题描述】:

我正在使用 jQuery 弹出脚本Magnific Popup。它在 WooCommerce 商店中运行良好,但是当我使用 Ajax 过滤器插件 (YITH) 过滤产品时,它会停止触发。我理解这是因为 Ajax 改变了页面,所以事件不再绑定到页面中的链接类,但不知道如何解决。

根据我的阅读,我可以使用on,但我不确定这如何适用于我触发下面的 Magnific Popup 脚本的方式。

jQuery('.product').magnificPopup({
    type:'inline',
    midClick: true,
    gallery:{
        enabled:false
    },
    delegate: 'a.wpb_wl_preview',
    removalDelay: 500, //delay removal by X to allow out-animation
    callbacks: {
        beforeOpen: function() {
           this.st.mainClass = this.st.el.attr('data-effect');
        }
    },
    closeOnContentClick: false,
});

【问题讨论】:

  • 我不知道 Magnific,但尝试只更改应用它的元素,将其放在 DOM 树的上方...将其添加到不会在 ajax 调用时更改的元素.或者您可以简单地在每次 ajax 调用结束时重新运行此代码。
  • 您好,感谢您的回复。它是一个随过滤器变化的产品列表,因此大部分页面都会发生变化。弹出窗口的触发器位于列表中的每个产品上。我看看有没有办法重新运行代码。
  • 你可以尝试将事件附加到父dom $('parent').on('click', 'dynamic elementclass', fn);

标签: javascript jquery ajax magnific-popup


【解决方案1】:

谢谢大家。我发现有一个 jQuery 函数可以检测 Ajax 何时执行,如下所示。不确定这是否是最好的方法,所以有兴趣查看其他答案,但这是可行的。

jQuery(document).ajaxSuccess(function() {

 //code to trigger here

});

【讨论】:

  • 是的,这就是我的建议,但您也可以使用 ajax 调用的成功回调,这样您的代码就不会运行每个 ajax 调用,而是运行正确的调用。
  • 谢谢。我该怎么做呢?大概我需要深入研究进行 Ajax 调用的 Wordpress 插件并在其中添加一个 sn-p。
  • 是的,如果你不拥有代码,那会有点困难......我建议你阅读有关参数函数的文档,以便你可以测试请求以确保你运行你的代码仅在需要时。另外,请注意,文档没有说明哪个处理程序将首先运行(您的插件或这个),这可能会成为问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
  • 2021-05-13
相关资源
最近更新 更多