Javascript MutationObserver仅获取removedNodes

Javascript MutationObserver仅获取removedNodes,javascript,jquery,mutation-observers,Javascript,Jquery,Mutation Observers,我试图从一个可以有0-n个副本并且可以动态添加的页面中获取一个特定的已删除元素属性。我开始使用DOMNodeRemoved事件来最初了解到这是不推荐的,然后转向MutationObserver。这是下面代码的示例- var deletionObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { if (mutation.removedNodes.len

我试图从一个可以有0-n个副本并且可以动态添加的页面中获取一个特定的已删除元素属性。我开始使用DOMNodeRemoved事件来最初了解到这是不推荐的,然后转向MutationObserver。这是下面代码的示例-

var deletionObserver = new MutationObserver(function (mutations) {
  mutations.forEach(function (mutation) {
    if (mutation.removedNodes.length > 0) {
      var $target = jQuery(mutation.removedNodes);
      lodash.forEach($target.find("Node"), function (value) {
..............

//Call
deletionObserver.observe(jQuery('body').get(0), {childList: true, subtree: true})
问题-我通过removedNodes对象获取的节点太多,例如,当我向页面添加
元素时,mutationObserver在removedNodes对象中返回一个
节点。类似地,当我删除一个
时,我会在removedNodes对象中获得一个额外的元素。是否有其他方法可以精确地获取removedNodes。在添加
元素时,我尝试将removedNode与jQuery(“body”)进行比较。差不多-

if(jQuery("body").find($target).length > 0)
这不管用,我总是得零分。任何建议都会对您有所帮助。请尝试以下方法:

var deletionObserver=new MutationObserver(
功能(突变){
弗雷奇先生(
功能(突变){
突变。附加节点。forEach(
功能(节点){
log('添加的节点',节点);
}
);
突变。移除节点。forEach(
功能(节点){
log('删除的节点',节点);
}
);
}
);
}
);
var container=document.querySelector('.container');
console.clear();
删除观察者。观察(容器{
儿童名单:是的,
子树:真
});
setTimeout(函数(){
var temp=document.createElement('p');
temp.textContent=“我是一个'p'标签”;
容器。子容器(临时);
setTimeout(函数(){
移除温度();
}, 1000);
}, 1000);
试试这个:

var deletionObserver=new MutationObserver(
功能(突变){
弗雷奇先生(
功能(突变){
突变。附加节点。forEach(
功能(节点){
log('添加的节点',节点);
}
);
突变。移除节点。forEach(
功能(节点){
log('删除的节点',节点);
}
);
}
);
}
);
var container=document.querySelector('.container');
console.clear();
删除观察者。观察(容器{
儿童名单:是的,
子树:真
});
setTimeout(函数(){
var temp=document.createElement('p');
temp.textContent=“我是一个'p'标签”;
容器。子容器(临时);
setTimeout(函数(){
移除温度();
}, 1000);
}, 1000);

您能多发布一点代码吗?您能多发布一点代码吗?我正在查看的父元素是一个文本区域(合流页面编辑模式)。因此,如果我按enter键,将添加一个新行,但会触发mutationObserver,它在removedNode对象中提供一个元素,而不是addedNodes。我将使用forEach,并将jQuery('body').get(0)作为一个示例。如果您谈论的是
元素,那么它们没有任何子元素。相反,它的所有文本都可以通过
element.value
获得。因此,突变观察者不会跟踪任何变化。相反,您可以使用
input
事件来了解何时进行了更改。如果您谈论的是
contentEditable
设置为
true
的DOM元素,那么变异观察者应该可以工作。你能发布更多的代码吗?这样我就可以更深入地研究这个问题了更多信息:我不是从字面意义上讲的,它是一个文本区域。请看视频了解我所说的合流页面编辑模式-。你需要整个方法吗?或者与上面不同的东西。我正在观察的父元素是一个文本区域(合流页面编辑模式)。因此,如果我按enter键,将添加一个新行,但会触发mutationObserver,它在removedNode对象中提供一个元素,而不是addedNodes。我将使用forEach,并将jQuery('body').get(0)作为一个示例。如果您谈论的是
元素,那么它们没有任何子元素。相反,它的所有文本都可以通过
element.value
获得。因此,突变观察者不会跟踪任何变化。相反,您可以使用
input
事件来了解何时进行了更改。如果您谈论的是
contentEditable
设置为
true
的DOM元素,那么变异观察者应该可以工作。你能发布更多的代码吗?这样我就可以更深入地研究这个问题了更多信息:我不是从字面意义上讲的,它是一个文本区域。请看视频了解我所说的合流页面编辑模式-。你需要整个方法吗?或者与上面不同的东西。