2016-07-14 51 views
0

DomNodeInserted已被棄用。我能找到的MutationObserver的唯一示例是顯示正在更新的元素,而不是添加的元素。關於dom中的班級創建

什麼是最好的方式來偵聽動態創建的某個類的新元素?

+1

將DOM節點添加到元素會觸發父權的更新事件? ':)' –

回答

-1

可能是你問,一旦類添加要觸發事件:

$(document).on('click', function(){ 
$('#theid').addClass('classname').trigger('classChange'); 
}); 


$('#theid').on('classChange', function() { 
// do stuff 
}); 

如果別的東西請解釋:

+0

你爲什麼要用jQuery? – aximus

+0

是的,這是一個點:) –

+0

@ManinderSingh我正在做一個ajax請求,然後創建一個表按鈕來編輯數據。我想創建另一個js類,當創建按鈕時,可以操縱按鈕的外觀。我想基本上做一個鉤子,所以js文件可以放入系統的任何部分,無需額外的配置。所以我只是想能夠操作按鈕創建之外的按鈕 – rob

0

爲此,您可以通過傳遞正確的MutationObserverInitMutationObserver。你必須設置subtreetrue,並添加attributeFilterclass(如れ的類名)

考慮下面的例子(基於https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/):

// select the target node 
var target = document.getElementById('some-id'); 

// create an observer instance 
var observer = new MutationObserver(function(mutations) { 
    mutations.forEach(function(mutation) { 
    console.log(mutation); 
    });  
}); 

// configuration of the observer: 
var config = { attributes: true, childList: false, characterData: false, subtree: true, attributeFilter: ['class']}; 

// pass in the target node, as well as the observer options 
observer.observe(target, config); 

var myElement = document.createElement('div'); 
myElement.innerHTML = 'foo'; 
target.appendChild(myElement); 

//triggers the mutation observer 
myElement.classList.add('bar'); 

的jsfiddle這裏:https://jsfiddle.net/7zwraaxz/3/