1

我需要这样的代码

if($('#someElement').hasClass('test'))
{
...
}

但我需要持续检查它而不是在特定位置。我的问题是像绑定这样的功能可以帮助我还是我必须使用间隔进行检查?

4

2 回答 2

2

如果你想一直检查。您将需要使用间隔。绑定只能用于绑定事件。像click,mouseenter等。

如果您想知道元素何时获得类别。你应该使用类似的东西:

setInterval($.proxy(function(){
    if( this.hasClass("test") && !this.data("classAdded") )
    {
        this.data("classAdded", true);
        // Class added only triggers once.
    }
}, $("#el")), 50);
于 2012-10-13T11:48:42.050 回答
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 。你可以在那里查看。)

于 2012-10-13T11:48:07.000 回答