2015-09-22 63 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