javascript - DOMNodeInserted DOMNodeRemoved 与 MutationObserver 的等价物?

标签 javascript jquery dom mutation-observers dom-node

我目前有代码:

$('.example').bind('DOMNodeInserted DOMNodeRemoved', function(event) {
    ....
});

它工作得很好,但效率不高,因此已被弃用。执行此操作的更好方法是什么?

我一直在研究 MutationObserver,但这段代码是否有效?

它给出错误“mutation.addedNodes 不是一个函数”我还需要 removedNodes 我意识到。

var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        mutation.addedNodes.forEach(function(node) {
          if (node.className == 'example') {
              ....
          }
        });
      });
    });
    observer.observe(document, {
      childList: true,
      subtree: true,
      attributes: false,
      characterData: false,
    });

最佳答案

.addedNodes 返回一个 NodeList 而不是 Array ,它没有 .forEach() 方法。尝试使用 Array.prototype.slice().addedNodes 转换为具有方法 .forEach()Array >

var observer = new MutationObserver(function(mutations) {
      mutations.forEach(function(mutation) {
        var nodes = Array.prototype.slice.call(mutation.addedNodes);
        nodes.forEach(function(node) {
          if (node.parentElement.className == "example") {
              alert(node.parentElement.className)
          }
        });
      });
    });
    observer.observe(document.querySelector(".example"), {
      childList: true,
      subtree: true,
      attributes: false,
      characterData: false,
    });

var el = document.createElement("div");
el.className = "example-child";
document.querySelector(".example").appendChild(el)
<div class="example"></div>

关于javascript - DOMNodeInserted DOMNodeRemoved 与 MutationObserver 的等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065355/

相关文章:

javascript - react 数组中的计数对象属性

javascript - 使用 JavaScript 从外部文件读取 CSS?

javascript - Jquery对话框高度和垂直滚动条

javascript - 内容区域在 Phonegap、android 2.2 中不滚动

javascript - knockout 嵌套 dom 元素上的多重绑定(bind)

javascript - 当分钟部分低于十时,Android-Esque 时间输入小部件不起作用

for循环中的Javascript按位逻辑

if 条件的 Javascript 格式化

javascript - 如何修改文本节点的 HTML(类型 3)/如何将其包装在 HTML span 中

javascript - 在 react 函数中更新后从文本输入中获取值