添加到DOM时触发Javascript事件

时间:2012-12-28 18:39:56

标签: 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

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

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

1 个答案:

答案 0 :(得分:9)

使用 DOMNodeInserted 突变事件。

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

上页给出的示例用法:

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

注:2016年4月17日

截至目前,不推荐使用变异事件。现在推荐的方法是Mutation Observers