簡體   English   中英

使用Mutation Observer檢測添加到DOM的元素

[英]Detect added element to DOM with Mutation Observer

我在拖動事件后向DOM添加了一些元素。 我需要檢測此元素以及添加此元素的時刻。 我使用Mutation Observer但是出了點問題,代碼:

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');
        }
    });
}

很多人都可以提供幫助。

下面是一個簡單的示例,說明如何在將元素添加到DOM時使用MutationObserver進行偵聽。

為簡潔起見,我使用jQuery語法構建節點並將其插入DOM。

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檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM