2014-02-08 44 views
0

我正在使用名爲jQuery推送器(https://github.com/salvan13/jquery-pusher)的插件在站點的某些部分創建一些ajax導航,但是此插件只能初始化一次,我需要能夠應用它到通過ajax加載的新內容。創建函數的額外實例

我的問題:可以通過命名空間或其他方式來解決這個問題,以創建同一個函數的多個實例,而不會覆蓋/干擾eachother?

回答

1

你真正的問題的措辭是什麼意思,我認爲這是你的困惑的根源不是很清楚。

確實,插件初始化不能像jQuery那樣可以延遲處理程序的方式來「延遲」,它將處理程序應用到頂層元素並從那裏過濾事件。插件需要直接的元素初始化:

$('#someElement').pusher(); 

或一組匹配的元素:

$('.someElements').pusher(); 

所以,添加到DOM後面的元素,比如通過AJAX,你需要加入後,他們明確地對它們進行初始化:

$('#someContainingElement').load('ajaxcontent.html' function() { 
    $('#someContainingElement .someElements').pusher(); 
}); 
+0

謝謝你的回答! 對不起,如果我說我的問題有點不清楚。我已經完成了你所說的話,然而在這種情況下的問題是,一旦推進器在#someOtherElement上運行,就會停止對#someElement進行處理(它在第二次運行時會覆蓋自身)。 這就是爲什麼我想知道它是否可以通過名稱空間解決或類似。 – jwaern

+0

@jwaern:這是奇怪的行爲,我想知道插件作者是否打算出於某種原因。如果你在兩個元素上連續兩次初始化插件(完全從圖片中取出AJAX),你還會看到這種行爲嗎?也許插件要求所有匹配的元素在一次初始化調用中傳遞?在這種情況下,在AJAX回調中,您只需展開選擇器即可包含所有需要初始化的元素。 – David