添加到DOM时触发Javascript事件

sgc*_*lie 10 javascript dom javascript-events

在将元素添加到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
Run Code Online (Sandbox Code Playgroud)

在将元素添加到DOM之前,有些函数不应被触发,因此在添加元素之前延迟执行是有意义的.

有没有办法在没有明确需要稍后调用它们的情况下执行此操作,或者我应该执行一些包含a setTimeout和检查以查看元素是否已添加到DOM的hack ?

tec*_*bar 14

使用DOMNodeInserted突变事件.

文档:https://developer.mozilla.org/en-US/docs/DOM/Mutation_events

上页给出的示例用法:

element.addEventListener("DOMNodeInserted", function (ev) {
  // ...
}, false);
Run Code Online (Sandbox Code Playgroud)

注:2016年4月17日

Mutation Events目前已被弃用.现在推荐的方法是 Mutation Observers.