通过代码检测类删除我无法控制

bat*_*aam 3 javascript jquery

我需要在从一个元素中删除一个类时调用一个函数,我无法控制何时删除该类.

目前我可以通过使用setTimeout使其工作,所以它是这样的:

function checkClassRemoval() {
    if (!$('.myElement').hasClass('mySecondClass')) {
        // run function
    }   
}   

setTimeout(checkClassRemoval, 1000);
Run Code Online (Sandbox Code Playgroud)

除了每秒运行一次检查之外,是否有更好的方法来清除班级?

Vad*_*imB 9

您可以使用MutationObserver类.它允许在发生此更改时订阅特定的DOM元素更改和触发事件:

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutationRecord) {
        console.log('style changed!');
    });    
});

var target = document.getElementById('someId');
observer.observe(target, { attributes : true, attributeFilter : ['style', 'className'] });
Run Code Online (Sandbox Code Playgroud)

有关此对象的支持,请参阅canIuse.com