Javascript 通过我无法控制的代码检测类删除
当从元素中删除类时,我需要调用函数,我无法控制删除类的时间。 目前,我可以使用setTimeout使其正常工作,因此它类似于:Javascript 通过我无法控制的代码检测类删除,javascript,jquery,Javascript,Jquery,当从元素中删除类时,我需要调用函数,我无法控制删除类的时间。 目前,我可以使用setTimeout使其正常工作,因此它类似于: function checkClassRemoval() { if (!$('.myElement').hasClass('mySecondClass')) { // run function } } setTimeout(checkClassRemoval, 1000); 是否有比每秒运行一次检查更好的方法捕获类的删除?
function checkClassRemoval() {
if (!$('.myElement').hasClass('mySecondClass')) {
// run function
}
}
setTimeout(checkClassRemoval, 1000);
是否有比每秒运行一次检查更好的方法捕获类的删除?您可以使用类来完成此操作。它允许订阅特定的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'] });
有关此对象的支持,请参阅您可以覆盖addClass/removeClass jQuery函数并按如下方式扩展它们:
(function(){
var nativeMethod= jQuery.fn.addClass;
jQuery.fn.addClass = function(){
var result = nativeMethod.apply( this, arguments );
jQuery(this).trigger('cssClassChanged');
return result;
}
})();
//Your code:
$(function(){
$("#yourElement").bind('cssClassChanged', function(){
console.log("triggered")
});
});
你知道这个类的删除是不是由jQuery完成的吗?变异观察者是另一个你可以遵循的方法。我不同意@guradio的可能重复,这是一个问题。没有进步question@guradio不在代码评审时,这将是一个非常离题的话题!在提出更多此类建议之前,请阅读他们的建议。我相信属性:true在使用attributeFilter时是多余的。我需要在Chrome上指定
“class”
,而不是“className”