我需要这样的代码
if($('#someElement').hasClass('test'))
{
...
}
但我需要持续检查它不在特定的位置。 我的问题是像bind这样的函数可以帮助我,还是我必须使用间隔进行检查?
答案 0 :(得分:2)
如果你想一直检查。您需要使用间隔。绑定只能用于绑定事件。与click
,mouseenter
等
如果你想知道一个元素何时获得一个类。你应该使用类似的东西:
setInterval($.proxy(function(){
if( this.hasClass("test") && !this.data("classAdded") )
{
this.data("classAdded", true);
// Class added only triggers once.
}
}, $("#el")), 50);
答案 1 :(得分:0)
您可以绑定自定义事件,然后在更改元素的类时触发,或者您可以覆盖在其中调用函数的addClass jQuery方法,执行类似的操作:
(function(){
// Your base, I'm in it!
var originalAddClassMethod = jQuery.fn.addClass;
jQuery.fn.addClass = function(){
// Execute the original method.
var result = originalAddClassMethod.apply( this, arguments );
// call your function
// this gets called everytime you use the addClass method
myfunction();
// return the original result
return result;
}
})();
我应该反对这最后的解决方案作为不好的做法,但如果你想要,你可以使用它。
(上面的代码来自这个答案:https://stackoverflow.com/a/1950199/580131。你可以在那里查看。)