我正在使用名爲jQuery推送器(https://github.com/salvan13/jquery-pusher)的插件在站點的某些部分創建一些ajax導航,但是此插件只能初始化一次,我需要能夠應用它到通過ajax加載的新內容。創建函數的額外實例
我的問題:可以通過命名空間或其他方式來解決這個問題,以創建同一個函數的多個實例,而不會覆蓋/干擾eachother?
我正在使用名爲jQuery推送器(https://github.com/salvan13/jquery-pusher)的插件在站點的某些部分創建一些ajax導航,但是此插件只能初始化一次,我需要能夠應用它到通過ajax加載的新內容。創建函數的額外實例
我的問題:可以通過命名空間或其他方式來解決這個問題,以創建同一個函數的多個實例,而不會覆蓋/干擾eachother?
原來爲這個特別的插件,這是解決方案:https://github.com/salvan13/jquery-pusher/issues/3
你真正的問題的措辭是什麼意思,我認爲這是你的困惑的根源不是很清楚。
確實,插件初始化不能像jQuery那樣可以延遲處理程序的方式來「延遲」,它將處理程序應用到頂層元素並從那裏過濾事件。插件需要直接的元素初始化:
$('#someElement').pusher();
或一組匹配的元素:
$('.someElements').pusher();
所以,添加到DOM後面的元素,比如通過AJAX,你需要加入後,他們明確地對它們進行初始化:
$('#someContainingElement').load('ajaxcontent.html' function() {
$('#someContainingElement .someElements').pusher();
});
謝謝你的回答! 對不起,如果我說我的問題有點不清楚。我已經完成了你所說的話,然而在這種情況下的問題是,一旦推進器在#someOtherElement上運行,就會停止對#someElement進行處理(它在第二次運行時會覆蓋自身)。 這就是爲什麼我想知道它是否可以通過名稱空間解決或類似。 – jwaern
@jwaern:這是奇怪的行爲,我想知道插件作者是否打算出於某種原因。如果你在兩個元素上連續兩次初始化插件(完全從圖片中取出AJAX),你還會看到這種行爲嗎?也許插件要求所有匹配的元素在一次初始化調用中傳遞?在這種情況下,在AJAX回調中,您只需展開選擇器即可包含所有需要初始化的元素。 – David