Javascript 当子dom节点附加到某个父节点时,是否可以监视或以某种方式检测?

Javascript 当子dom节点附加到某个父节点时,是否可以监视或以某种方式检测?,javascript,dom,Javascript,Dom,假设我有一个子节点a,我能检测到什么时候某个任意父节点。如果我不知道父节点将是什么,则会发生appendChild(a)。应该可以在主体上使用DOMNodeInserted或DOMSubtreeModified可能是您正在寻找的。 有关可用的突变事件的完整列表(尽管是ie9+),您可以查看mozilla文档: 根据您的最终目标是什么,您可以尝试类似的方法,在本例中,我假设a有一个唯一的类,允许检测它 document.addEventListener("DOMNodeInserted", fun

假设我有一个子节点
a
,我能检测到什么时候
某个任意父节点。如果我不知道父节点将是什么,则会发生appendChild(a)

应该可以在
主体上使用

DOMNodeInserted或DOMSubtreeModified可能是您正在寻找的。 有关可用的突变事件的完整列表(尽管是ie9+),您可以查看mozilla文档:

根据您的最终目标是什么,您可以尝试类似的方法,在本例中,我假设a有一个唯一的类,允许检测它

document.addEventListener("DOMNodeInserted", function(event) {
   if (event.target.classList.contains("custom-class")) {
     // perform operations
   }
});

正如myf所建议的,您最好使用API来观察
body
元素。不容易猜测的是,在配置观察者时需要将
子树
选项设置为
true
,以便侦听
主体
的所有后代的DOM更改

//选择链接节点
var link=document.querySelector(“#link”);
//当链接附加到父元素时,该变量将保存该元素
var检测父代;
//出于测试目的,插入由按钮触发的功能
var container=document.querySelector(“#container2”);
函数插入(){
container.appendChild(link);
}    
//创建一个观察者实例
var观察者=新的突变观察者(功能(突变){
//遍历每一个变异
突变。forEach(功能(突变){
对于(var i=0;i
.container{
边框:1px纯红;
高度:50px;
}

插入链接

Link
您对添加节点的代码有控制权吗?@B T如果使用jquery,您可能希望查看()上的
更改
事件。@RahulNanwani我确实有控制权,但我正在构建一个库,我希望我不必要求通过特殊功能来制作附件。因为,比如说,如果有人做了一个原始的
节点.appendChild(something)
库就不能工作了。我希望我可以切实地检测到何时将节点添加到文档中以避免混淆。您可能需要详细说明一下,并提供一个如何执行此操作的示例。这可能不是一个持久的解决方案。DOM事件是一种不推荐使用的API,请参见your own link.true,但变异观察程序目前仅适用于大多数边缘实现。一个更好的解决方案是使用变异观察者和回退变异事件,以获得最佳的兼容性。我仍然不知道这在appendChild
,那就太好了。好吧,如果你能够缩小元素可能的父元素的范围,你可以将观察者向下移动到DOM树,或者设置多个针对特定类和/或ID的观察者,大大减少了工作量。不幸的是,就我而言,我不能