gpt4 book ai didi

javascript - 删除元素时的 DOM 事件

转载 作者:搜寻专家 更新时间:2023-10-31 08:23:25 24 4
gpt4 key购买 nike

当一个元素从 DOM 中移除时,是否有任何方法可以得到通知,无论是直接还是作为子树的一部分?似乎唯一可用的方法仅适用于直接删除的节点,但我希望在删除包含我的节点的整个子树时收到通知。

编辑

似乎问题还没有完全清楚,所以我提出了一个挑战:https://jsbin.com/winukaf

DOM 看起来像这样:

<body>
<div class="root">
<div class="great-grand-parent">
<div class="grand-parent">
<div class="parent">
<div class="leaf">
Am I still here?
</div>
</div>
</div>
</div>
</div>
</body>

挑战是在删除此处的任何一个元素时发出通知,因为这将从 DOM 树中删除叶节点。

最佳答案

有一个名为 MutationObserver 的 HTML5 API它有很好的support

这是一个例子:

// Element is the whatever subtree/element you need to watch over
var in_dom = document.body.contains(element);
var observer = new MutationObserver(function(mutations) {
if (document.body.contains(element)) {
if (!in_dom) {
console.log("element inserted");
}
in_dom = true;
} else if (in_dom) {
in_dom = false;
console.log("element removed");
}

});
observer.observe(document.body, {childList: true, subtree: true});

关于javascript - 删除元素时的 DOM 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52834774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com