如何检测从dom元素添加/删除的元素?

时间:2013-11-22 23:34:38

标签: javascript jquery html html5

说我使用jquery有一个div#parentappendremove个元素。我怎样才能检测到div#parent元素上发生此类事件的时间?

3 个答案:

答案 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

不推荐使用以下方法

您可以使用DOMNodeInsertedDOMNodeRemoved

$("#parent").on('DOMNodeInserted', function(e) {
    console.log(e.target, ' was inserted');
});

$("#parent").on('DOMNodeRemoved', function(e) {
    console.log(e.target, ' was removed');
});

MDN Docs

答案 2 :(得分:2)

您应绑定DOMSubtreeModified事件

$("#parent").bind("DOMSubtreeModified",function(){
  console.log('changed');
});

http://jsfiddle.net/WQeM3/