有没有人知道如何在元素添加到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>
答案 0 :(得分:9)
使用 DOMNodeInserted 突变事件。
文档:https://developer.mozilla.org/en-US/docs/DOM/Mutation_events
上页给出的示例用法:
element.addEventListener("DOMNodeInserted", function (ev) {
// ...
}, false);
注:2016年4月17日
截至目前,不推荐使用变异事件。现在推荐的方法是Mutation Observers。