2016-05-30 40 views
0

如果我們附上委派事件與jquery。對()之類去除與jquery卸下襬臂()DOM元素

$(".container").on("click", "#testDiv", function (event){ 
    console.log(event); 
}); 

和後者在腳本如果刪除與jquery卸下襬臂的#testDiv元件( )爲,

$("#testDiv").remove(); 

然後將它創建任何內存泄漏或不...

回答

0

好吧,既然你正在使用連接到.container委派事件,您的事件監聽器將會刪除而不是

documentation說:

事件代表團允許我們附加一個單一的事件偵聽器,到 父元素,將火了 選擇匹配所有後代,無論是現在存在或添加這些後代在未來的 。

這意味着,只要點擊事件被觸發內部.container,總是會執行一個查詢,以檢查是否點擊的元素是#testDiv

這不能被定義內存泄漏,因爲它究竟是如何應該工作事件代表團。閱讀this post其中解釋了事件委託與直接綁定之間的性能差異。

無論如何,如果你不需要那麼聽衆了,您可以:

  • 通話.off()功能刪除
  • 或只是不,如果你使用事件代表團元素之前手動刪除監聽器真的不需要,但直接綁定
+0

謝謝@pumpkinzzz,只是多一個查詢,在我的情況下,我有類似的百年的事件,他們各自的元素可以刪除或基於用戶交互動態添加。所以有什麼更好的方式來處理它,我應該刪除事件,當元素被刪除,並添加事件回來時,它再次被添加... –

+0

@atulbajpai nope,如果你有一百個事件只是繼續使用委託事件,它完全沒問題。看到我更新的答案 – pumpkinzzz