2015-10-22 104 views
2

Can有人可以告訴我這兩個腳本有什麼區別,不是使用Javascript/jQuery的專家。

$(document).on("click", "a", function() { 
    i = $(this).data("value"); 
    alert(i) 
}) 

$("a").click(function() { 
    i = $(this).data("value"); 
    alert(i) 
}); 
+0

我認爲第一個將是動態的來的人 –

回答

5

$(document).on("click", "a", function() {將在a元件,其根本不存在的結合事件的時間綁定事件,這被稱爲event delegation

事件代表團允許我們重視一個單一的事件監聽器,一個父元素,它會觸發所有與選擇器相匹配的後代,無論是那些後代現在存在或將來增加。

$("a").click(function() {將僅將事件綁定到存在於DOM中的a元素。

2

第一個給出event delegation即它將事件綁定到DOM中存在的元素,並且滿足選擇條件+綁定事件綁定(滿足選擇器條件)後添加到DOM中的任何元素將自動綁定爲它在飛行中被添加到DOM。

而後者將綁定事件與現有的元素。

Delegated events

委託事件有優勢,他們可以處理來自被添加到該文件在稍後的時間 後代元素的事件。通過 挑選一個在連接了委託事件處理程序時保證存在的元素,可以將委派事件用於 ,從而避免需要經常附加和刪除事件處理程序。

2

第一個將檢查文檔的每一次點擊,並檢查它是否來自「a」標籤,如果是這樣執行代碼,這也將與動態創建的「a」標籤相關。

第二個將執行僅適用於頁面上已存在的「a」個元素的代碼。

相關問題