说我有一个div#parent
和我append
和remove
元素使用jQuery的。在div#parent
元素上发生这样的事件时,我将如何检测?如何检测元素被添加/从DOM元素中删除?
回答
使用Mutation Observers由@Qantas中建议他answer
您可以使用DOMNodeInserted和DOMNodeRemoved
$("div#parent").on('DOMNodeInserted', function(e) {
console.log(e.target, ' was inserted');
});
$("div#parent").on('DOMNodeRemoved', function(e) {
console.log(e.target, ' was removed');
});
你应该绑定DOMSubtreeModified
事件
$("#parent").bind("DOMSubtreeModified",function(){
console.log('changed');
});
'DOMSubtreeModified'事件已被弃用:我可以使用(https://caniuse.com/#search=DOMSubtreeModified) – Cody
请勿使用像DOMNodeInserted和DOMNodeRemoved这样的突变事件。
相反,使用DOM Mutation Observers,这是在除了IE10所有现代浏览器都支持和较低(Can I use)。突变观察者旨在替代突变事件(已被弃用),因为它们由于flaws in its design而被发现性能低下。
var x = new MutationObserver(function (e) {
if (e[0].removedNodes) console.log(1);
});
x.observe(document.getElementById('parent'), { childList: true });
感谢您的回答,但*突变观察者*有一个不好的行为:我想将观察者设置为将在稍后附加到树上的节点。我不知道父母(用'DOMNodeRemoved'我可以。任何想法?我希望节点听自我毁灭 – DenisKolodin
@DenisKolodin哇,我没有注意到这个评论,对不起。为了后代的缘故,这应该由[这个问题](https://stackoverflow.com/q/31798816/2074608)。它的确意味着在文档级别放置一个事件,但是突变事件具有如此大的性能损失,它可能无所谓。 –
- 1. 如何从DOM中删除子元素时删除父元素?
- 2. 从DOM中删除元素
- 3. 我该如何检测一个dom元素已被删除
- 4. 添加类元素每当元素被添加到DOM
- 5. 从DOM动态添加和删除元素DOM
- 6. 从$ .each中删除DOM中的元素
- 7. Javascript导致DOM元素被删除
- 8. 如何检查一个元素是否已从DOM中删除?
- 9. jQuery DOM元素被删除,但子元素数仍然相同
- 10. 从元素中删除元素而不删除元素后
- 11. 从Jquery中删除DOM元素
- 12. 从DOM中插入删除元素
- 13. TransitionGroup不会从DOM中删除元素
- 14. 从DOM中删除html元素
- 15. 自动从DOM中删除元素
- 16. Vue.js:从v中删除元素时添加“_delete”元素
- 17. jquery:如何检测某些元素何时添加到dom?
- 18. 添加和删除元素
- 19. 添加/删除子元素
- 20. 删除DOM元素错误
- 21. JavaScript DOM删除元素
- 22. 使用jQuery元素添加删除元素使用html元素
- 23. 如何删除jQuery添加的元素?
- 24. DOM:如何检测新的子元素?
- 25. 删除并追加DOM元素
- 26. 添加(删除)元素(S)从ImmutableSortedMultiset
- 27. 从香草DOM删除元素javascript
- 28. 删除元素不是从DOM
- 29. 当单击的元素已从DOM中删除时,检测何时单击元素外部的任何位置?
- 30. jQuery添加DOM元素
突变事件已被弃用,这个答案应该不再是正确的。 Mutation Observers被设计为Mutation Events的替代品,所以Qantas的答案是正确的。 https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events和https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver – Parziphal