突变完成

时间:2018-06-05 00:20:49

标签: javascript jquery dom mutation

我包含第三方javascript,后者又将子元素附加到DOM,并且执行此操作所需的时间是可变的,有没有办法让我找出Mutation何时完成,例如DOMNodeInserted完成了吗?

目前我的代码似乎是

$("#searchgadget").bind("DOMNodeInserted",function(){
alert("added");}

正如预期的那样,我会收到添加到“searchgadget”的每500多个元素的警报,但是,我只对完成后感兴趣我只想在最后一个DOMNodeInserted之后做一些逻辑。无论如何要做到这一点?

1 个答案:

答案 0 :(得分:1)

假设附加节点的代码同步运行,它们之间不会有任何延迟。您可以在每次插入节点时设置超时。当超时完成时,它完成了所有突变。

insertTimeout = null;
$("#searchgadget").on("DOMNodeInserted", function() {
    clearTimeout(insertTimeout);
    insertTimeout = setTimeout(function() {
        alert("added");
    }, 100);
});