2015-09-22 65 views
0

我正在使用jQuery弹出脚本Magnific Popup。它在WooCommerce商店中运行良好,但是当我使用Ajax Filter Plugin(YITH)过滤产品时,它会停止触发。我知道这是因为Ajax已经改变了页面,所以事件不再绑定到页面中的链接类,但不知道如何解决它。jQuery图库不会在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, 
}); 
+0

我不知道Magnific酒店,但要尽量只是改变在其应用它的元素,把它上面的DOM树......它添加到其将不会在Ajax调用修改的元素。或者您可以简单地在每个Ajax调用结束时重新运行此代码。 – Salketer

+0

嗨,感谢您的回复。它是一个随过滤器而变化的产品列表,因此大部分页面都会更改。弹出窗口的触发器位于列表中的每个产品上。我会看看是否有重新运行代码的方法。 – user1837290

+0

你可以尝试的是将事件附加到父dom $('parent')。on('click','dynamic elementclass',fn); –

回答

0

谢谢大家。我发现有一个jQuery函数来检测何时执行了下面的Ajax。不知道这是不是最好的方法,所以有兴趣看到其他答案,但这是有效的。

jQuery(document).ajaxSuccess(function() { 

//code to trigger here 

}); 
+1

是的,这就是我的建议,但你也可以使用ajax调用的成功回调,所以你的代码不会运行每个Ajax调用,但只是在正确的。 – Salketer

+0

谢谢。我会怎么做呢?据推测,我需要深入挖掘Ajax调用的Wordpress插件并在其中添加代码片段。 – user1837290

+0

是的,如果你不拥有代码会有点困难...我建议你阅读有关参数函数的文档,以便你可以测试请求以确保只在需要时运行你的代码。另外,请注意,文档不会说哪个处理程序将首先运行(您的插件或此插件),这可能会产生问题 – Salketer