我需要监视特定DOM元素的任何子元素的属性更改。到目前为止,我一直在使用变异事件。
问题是 - 它们存在缺陷:例如,在Chromium下,
无论如何,最近版本的Chromium如果修改了属性,则不会触发任何内容。
然而,新的Mutation Observer API却可以完美地解决这个问题。
到目前为止,我只需要在特定元素的子树中的任何更改时触发回调-因为不应该有其他更改-因此我通过在同一段代码中使用变异事件和变异观察器(如果可用)来解决了我的问题。
然而,现在我需要对事件进行更强大的过滤(例如,在新节点上,删除节点上)- 是否有库,可能是jQuery插件,可以让我优雅地使用
例如:
问题是 - 它们存在缺陷:例如,在Chromium下,
DOMAttrModified
未触发,但DOMSubtreeModified
被触发。问题很容易解决:因为根据规范,如果触发了其他事件,则会触发DOMSubtreeModified
,所以我只需监听DOMSubtreeModified
即可。无论如何,最近版本的Chromium如果修改了属性,则不会触发任何内容。
然而,新的Mutation Observer API却可以完美地解决这个问题。
到目前为止,我只需要在特定元素的子树中的任何更改时触发回调-因为不应该有其他更改-因此我通过在同一段代码中使用变异事件和变异观察器(如果可用)来解决了我的问题。
然而,现在我需要对事件进行更强大的过滤(例如,在新节点上,删除节点上)- 是否有库,可能是jQuery插件,可以让我优雅地使用
MutationObserver
API和变异事件作为后备,具有筛选特定事件类型(例如添加元素,更改属性)的能力。例如:
$("#test").watch({onNewElement: 1}, function(newElement){})
$("#test").watch({onNewAttribute: 1}, function(modifiedElement) {})
或者不使用jQuery
watchChanges("#test", {onNewElement: 1}, function(newElement){})
watchChanges("#test", {onNewAttribute: 1}, function(modifiedElement){})