2010-04-18 42 views
1

我有一個網站有一些需要通過AJAX動態加載內容的容器。Jquery AJAX和搞清楚如何不嵌套回調多個重新加載。

容器內的大多數鏈接實際上都在同一個容器中加載新數據。

IE:$("#navmenu_item1").click(function() { $("#navmenu").load(blah); });

當我點擊一個鏈接,可以說,「註銷」,並與更新的登錄狀態菜單重新加載,沒有任何鏈接的現在的工作,因爲我需要一個新的.click加入到回調代碼。

現在,隨着重複點擊和AJAX請求,我不知道如何從這裏前進,因爲我確信嵌套回調不是最優的。

這樣做的最好方法是什麼?

我是否將實際的AJAX文件中的.click事件包含在從服務器中取出,而不是在index.php中? 或者我可以以某種方式重新加載DOM?

感謝您的幫助!

回答

1

您正在尋找.live function,它將處理匹配選擇​​器的所有元素的事件,而不管它們是什麼時候創建的。

+0

SLaks也是正確的和/或具有相同特性但可以鏈接的委託功能。 – XGreen 2010-04-18 15:26:39

1

既然你重裝一個特定的元素,你可以存儲在那裏使用.delegate()像這樣的事件偵聽器:

$("#navmenu").delegate("#navmenu_item1", "click", function() { 
    $("#navmenu").load(blah); 
}); 

這是通過監聽點擊冒泡的#navmenu元素和執行任何處理與選擇器匹配。 .delegate()格式是.delegate(selector, event, handler)

既然你加載#navmenu,實際的元素上的事件處理程序不會吹走就像他們在被替換裏面的孩子做,所以現在點擊會爲當前或未來的元素在裏面工作#navmenu