如何监视DOM的变化?
有没有一种方法 – 使用jQuery或其他方式 – 监视DOM插入,删除,样式更新等?
请参阅https://developer.mozilla.org/en/DOM/DOM_event_reference中的; “MutationEvent”元素,但不推荐使用这些元素。
jQuery现在提供了一种将事件附加到与select器相对应的现有和将来元素的方法: http : //docs.jquery.com/Events/live#typefn
这可能是一个你可以用于缺乏适当的DOM节点修改信息的技巧。
查看突变总结库。 它build立在一个名为DOM Mutation Observers的新浏览器API之上。
这仅用于debugging目的:
Firebug目前允许在html节点上设置断点。
你必须打开HTML检查器,右键单击一个节点,你有以下select:
- 中断属性更改
- 子中断添加/删除
- 中断删除
一旦你到达断点,你也可以浏览调用堆栈。
谷歌浏览器也有类似的function。
我最近写了一个插件,完全是 – jquery.initialize
您可以像使用.each
函数一样使用它
$(".some-element").initialize( function(){ $(this).css("color", "blue"); });
与.each
的不同之处在于 – 它需要你的select器,在这种情况下.some-element
并在将来等待这个select器的新元素,如果这个元素将被添加,它也将被初始化。
在我们的例子中,初始化函数只是将元素的颜色改为蓝色。 所以如果我们要添加新的元素(不pipe是用ajax还是F12检查器或者其他的东西),比如:
$("<div/>").addClass('some-element').appendTo("body"); //new element will have blue color!
插件将立即启动它。 插件也确保一个元素只被初始化一次。 所以,如果你添加元素,然后从身体.deatch()
,然后再添加它,它不会被再次初始化。
$("<div/>").addClass('some-element').appendTo("body").detach() .appendTo(".some-container"); //initialized only once
插件是基于MutationObserver
– 它可以在IE9和10上工作,具有依赖性,详见自述文件页面 。