说我使用jquery有一个div#parent
和append
和remove
个元素。我怎样才能检测到div#parent
元素上发生此类事件的时间?
答案 0 :(得分:79)
不要使用像DOMNodeInserted和DOMNodeRemoved这样的突变事件。
相反,使用DOM Mutation Observers,除了IE10和更低版本(Can I use)之外,所有现代浏览器都支持DOM flaws in its design。突变观察者旨在取代突变事件(已被弃用),因为{{3}}已发现它们的性能较低。
var x = new MutationObserver(function (e) {
if (e[0].removedNodes) console.log(1);
});
x.observe(document.getElementById('parent'), { childList: true });
答案 1 :(得分:22)
根据@Qantas在Mutation Observers
中的建议使用answer不推荐使用以下方法
您可以使用DOMNodeInserted和DOMNodeRemoved
$("#parent").on('DOMNodeInserted', function(e) {
console.log(e.target, ' was inserted');
});
$("#parent").on('DOMNodeRemoved', function(e) {
console.log(e.target, ' was removed');
});
答案 2 :(得分:2)
您应绑定DOMSubtreeModified
事件
$("#parent").bind("DOMSubtreeModified",function(){
console.log('changed');
});