首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用变异观察器检测添加到DOM中的元素

使用变异观察器检测添加到DOM中的元素
EN

Stack Overflow用户
提问于 2013-12-06 17:39:15
回答 1查看 10.9K关注 0票数 13

在拖拽事件之后,我向DOM中添加了一些元素。我需要检测这个元素以及添加这个元素的时刻。我使用了突变观察器,但有些地方不对劲,代码如下:

代码语言:javascript
复制
var targetNodes = $('.mvly');
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var myObserver = new MutationObserver (mutationHandler);
var obsConfig = { childList: true, characterData: true, attributes: true, subtree: true };

targetNodes.each(function(){
    myObserver.observe(this, obsConfig);
} );

function mutationHandler (mutationRecords) {
    mutationRecords.forEach ( function (mutation) {
        if (typeof mutation.addedNodes == "object") {
            console.log('test');
        }
    });
}

有人能帮上忙吗,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-07-24 00:27:14

下面是一个简单的示例,说明如何使用MutationObserver侦听何时将元素添加到DOM中。

为简洁起见,我使用jQuery语法构建节点并将其插入到DOM中。

代码语言:javascript
复制
var myElement = $("<div>hello world</div>")[0];

var observer = new MutationObserver(function(mutations) {
   if (document.contains(myElement)) {
        console.log("It's in the DOM!");
        observer.disconnect();
    }
});

observer.observe(document, {attributes: false, childList: true, characterData: false, subtree:true});

$("body").append(myElement); // console.log: It's in the DOM!

您不需要遍历存储在mutations中的每个MutationRecord,因为您可以直接对myElement执行document.contains检查。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20420577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档