一千萬個為什麽

搜索

Jquery AJAX並弄清楚如何不為多次重載嵌套回調。

我有一個包含幾個容器的站點需要通過AJAX動態加載內容。

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

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

當我點擊一個鏈接,讓我們說“註銷”,並且菜單重新加載了更新的登錄狀態,現在沒有鏈接可用,因為我需要在回調代碼中添加一個新的 .click

現在重復點擊和AJAX請求我不知道如何從這裏向前推進,因為我確信嵌套回調不是最佳的。

最好的方法是什麽?

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

謝謝您的幫助!

最佳答案

由於您正在重新加載特定元素,因此可以使用 .delegate()<�將事件監聽器存儲在那裏/ code> 像這樣:

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

這通過監聽單擊以冒泡到 #navmenu 元素並執行與選擇器匹配的任何處理程序來工作。 .delegate()格式是 .delegate(selector,event,handler)

由於您正在 #navmenu 中加載,因此該實際元素上的事件處理程序不會像在內部替換的子項上那樣被吹走,所以點擊次數現在將用於 #navmenu 中的當前或未來元素。

轉載註明原文: Jquery AJAX並弄清楚如何不為多次重載嵌套回調。