如何检测正在从dom元素中添加/删除的元素
How to detect element being added/removed from dom element?
假设我使用jquery有一个div#parent
、append
和remove
元素。当div#parent
元素上发生此类事件时,我将如何检测?
不要使用DOMNodeInserted和DOMNodeRemoved等突变事件
相反,使用DOM突变观测器,除IE10及更低版本外,所有现代浏览器都支持它(我可以使用吗)。突变观测器旨在取代突变事件(已被弃用),因为由于其设计缺陷,它们的性能较低。
var x = new MutationObserver(function (e) {
if (e[0].removedNodes) console.log(1);
});
x.observe(document.getElementById('parent'), { childList: true });
按照@Qantas在其回答中的建议使用突变观测器
下列方法已弃用
您可以使用DOMNodeInserted和DOMNodeRemoved
$("#parent").on('DOMNodeInserted', function(e) {
console.log(e.target, ' was inserted');
});
$("#parent").on('DOMNodeRemoved', function(e) {
console.log(e.target, ' was removed');
});
MDN文档
您应该绑定DOMSubtreeModified
事件
$("#parent").bind("DOMSubtreeModified",function(){
console.log('changed');
});
http://jsfiddle.net/WQeM3/
它不会让我在下面评论顶部答案,但为了回答你的问题@DenisKolodin,为了倾听自我毁灭,你可以做这样的事情:
function watchElForDeletion(elToWatch, callback, parent = document.querySelector('body')){
const observer = new MutationObserver(function (mutations) {
// loop through all mutations
mutations.forEach(function (mutation) {
// check for changes to the child list
if (mutation.type === 'childList') {
// check if anything was removed and if the specific element we were looking for was removed
if (mutation.removedNodes.length > 0 && mutation.removedNodes[0] === elToWatch) {
callback();
}
}
});
});
// start observing the parent - defaults to document body
observer.observe(parent, { childList: true });
};
它默认将父元素作为body元素,并且只有在您要查找的特定元素被删除时才运行回调。
我认为我们使用socket.io!。
因为我们检测应该添加哪个元素,然后可能猜测哪个元素将被删除
也许是可能的
感谢
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 通过AJAX侦听向DOM添加某些元素
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- Selenium无法在浏览器DOM中定位元素
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- 从dom中删除任何元素后,Touchmove事件停止触发
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- 找到元素DOM的根节点(阴影或光)的最佳方法是什么?
- 在querySelector:如何获得第一个和最后一个元素?dom中使用的遍历顺序