2012-03-12 61 views
16

我需要創建一個事件偵聽器,以便在將新元素添加到文檔或其任何子元素時,我的事件處理函數被調用。收聽事件,如在JavaScript中添加新元素

任何想法如何做到這一點使用?

+1

的[檢測DOM中的變化]可能重複(http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom) – 2012-03-12 12:24:00

+0

@zeacuss:去這裏HTTP:// WWW .w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener – krish 2012-03-12 12:29:23

回答

23
.bind('DOMNodeInserted DOMNodeRemoved') 

這是要插入或移除要檢查的事件元素。

在父元素上綁定此事件。

,並調用你的處理函數

JS提琴演示http://jsfiddle.net/PgAJT/

點擊此處例如 ... http://help.dottoro.com/ljmcxjla.php

+1

演示是完美的 – zeacuss 2012-03-12 17:17:12

+0

這是工作很好,除了在IE ... – 2013-12-17 16:47:27

+6

它現在被棄用..見https:/ /developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events – yomexzo 2014-07-31 09:05:08

4

DOMNodeInserted在DOM Level 3的建議棄用。使用它們會降低瀏覽器的速度(他們說)。取決於你需要什麼,在插入元素的代碼中觸發自定義事件可能是有意義的。

+4

實際上,我不是添加節點的人,所以我無法在添加它的地方處理它。 – zeacuss 2012-03-12 17:15:30

18

不推薦使用突變事件,請使用Mutation Observer代替。您也可以使用arrive.js庫,它在內部使用Mutation Observer並提供了一個很好的簡單api來監聽元素的創建和刪除。

$('#container').arrive('.mySelector', function(){ 
    var $newElem = $(this); 
}); 
+2

非常好的圖書館!解決了我目前的問題,一定會在未來的項目中使用它。謝謝,Uzair! – mkp 2014-09-17 20:14:45

相關問題