2012-03-12 55 views
16

我需要创建一个事件侦听器,以便在将新元素添加到文档或其任何子元素时,我的事件处理函数被调用。收听事件,如在JavaScript中添加新元素

任何想法如何做到这一点使用?

+1

的[检测DOM中的变化]可能重复(http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom) – 2012-03-12 12:24:00

+0

@zeacuss:去这里HTTP:// WWW .w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener – krish 2012-03-12 12:29:23

回答

23
.bind('DOMNodeInserted DOMNodeRemoved') 

这是要插入或移除要检查的事件元素。

在父元素上绑定此事件。

,并调用你的处理函数

JS提琴演示http://jsfiddle.net/PgAJT/

点击此处例如 ... http://help.dottoro.com/ljmcxjla.php

+1

演示是完美的 – zeacuss 2012-03-12 17:17:12

+0

这是工作很好,除了在IE ... – 2013-12-17 16:47:27

+6

它现在被弃用..见https:/ /developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events – yomexzo 2014-07-31 09:05:08

4

DOMNodeInserted在DOM Level 3的建议弃用。使用它们会降低浏览器的速度(他们说)。取决于你需要什么,在插入元素的代码中触发自定义事件可能是有意义的。

+4

实际上,我不是添加节点的人,所以我无法在添加它的地方处理它。 – zeacuss 2012-03-12 17:15:30

18

不推荐使用突变事件,请使用Mutation Observer代替。您也可以使用arrive.js库,它在内部使用Mutation Observer并提供了一个很好的简单api来监听元素的创建和删除。

$('#container').arrive('.mySelector', function(){ 
    var $newElem = $(this); 
}); 
+2

非常好的图书馆!解决了我目前的问题,一定会在未来的项目中使用它。谢谢,Uzair! – mkp 2014-09-17 20:14:45

相关问题