2012-12-28 53 views
5

有誰知道如何在元素添加到DOM後觸發JavaScript中的事件?添加到DOM觸發Javascript事件

的總體思路是這樣的:

var elem = document.createElement('div'); 
elem.addEventListener('ON_ADD_TO_BODY', function(){console.log(elem.parentNode)}); 
//... LATER ON ... 
parentElemInBody.appendChild(elem); // <- Event is triggered here after append 

有,直到你的元素添加到DOM所以它纔有意義推遲執行,直到加入的元素是不應該被觸發某些功能。

有沒有辦法做到這一點,而不需要明確地打電話給他們,或者我應該做一些破解,包括setTimeout和一個檢查,看看元素是否已經添加到DOM呢?

回答

7

使用DOMNodeInserted突變事件。

文檔瀏覽:https://developer.mozilla.org/en-US/docs/DOM/Mutation_events

用法示例在上面給出頁:

element.addEventListener("DOMNodeInserted", function (ev) { 
    // ... 
}, false); 

注:2016年4月17日

突變事件被棄用的現在。現在推薦的方法是Mutation Observers

+0

我不知道那些甚至存在!我確實需要支持IE9-儘管:(並且那些關於性能命中的評論並不是很令人放心,我知道我沒有在問題中指定這個答案,所以你的答案是正確的,但是我需要考慮所有這些。是否有混合的方法,至少支持IE9? – sgcharlie

+0

對於不支持上述操作的瀏覽器,您可能需要推出一個定時器,定期檢查父元素的子元素並觸發一些回調。 – techfoobar

+1

突變事件現在不推薦使用,請考慮使用[Mutation Observers](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)代替 – ZitRo