Javascript 等同于使用MutationObserver插入的域节点删除?
我目前拥有以下代码:Javascript 等同于使用MutationObserver插入的域节点删除?,javascript,jquery,dom,mutation-observers,dom-node,Javascript,Jquery,Dom,Mutation Observers,Dom Node,我目前拥有以下代码: $('.example').bind('DOMNodeInserted DOMNodeRemoved', function(event) { .... }); 它工作得很好,但效率不是很高,因此已被弃用。有什么更好的方法可以做到这一点 我一直在研究MutationObserver,但这段代码行吗 它给出了错误“变异。addedNodes不是函数”,我还需要removedNodes我意识到 var observer = new MutationObserver(fu
$('.example').bind('DOMNodeInserted DOMNodeRemoved', function(event) {
....
});
它工作得很好,但效率不是很高,因此已被弃用。有什么更好的方法可以做到这一点
我一直在研究MutationObserver,但这段代码行吗
它给出了错误“变异。addedNodes
不是函数”,我还需要removedNodes
我意识到
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
mutation.addedNodes.forEach(function(node) {
if (node.className == 'example') {
....
}
});
});
});
observer.observe(document, {
childList: true,
subtree: true,
attributes: false,
characterData: false,
});
.addedNodes
返回一个节点列表
而不是一个数组
,该数组没有.forEach()
方法。尝试使用Array.prototype.slice()
将.addedNodes
强制转换到具有方法.forEach()
var observer=新的突变观察者(函数(突变){
突变。forEach(功能(突变){
var节点=Array.prototype.slice.call(mutation.addedNodes);
forEach(函数(节点){
if(node.parentElement.className==“示例”){
警报(node.parentElement.className)
}
});
});
});
observer.observe(document.querySelector(“.示例”){
儿童名单:是的,
子树:对,
属性:false,
characterData:false,
});
var el=document.createElement(“div”);
el.className=“示例子项”;
document.querySelector(“.example”).appendChild(el)
等等,我需要文档成为。示例?因为我希望得到.example
的任何子节点的通知,而不是.example
itself@Maximilian“等等,我需要文档是.example?因为我希望得到.example的任何子节点的通知,而不是.example本身”Yes@Maximilian“这似乎不起作用!”可以用“似乎不起作用”来形容吗?可以创建JSFIDLE或plnkr来演示吗?行为上有一个区别:DOMNodeRemoved没有为观察到的节点触发。我应该使用家长吗?MutationObserver对我来说似乎毫无用处(@DenisKolodin“行为上存在差异:DOMNodeRemoved未针对观察到的节点触发”。您是否发布了描述问题的问题?您是否可以共享plnkr演示问题?