1

私はこのようなコードが必要です

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

しかし、特定の位置ではなく、しつこくチェックする必要があります。私の質問は、 bind のような関数が私を助けることができるか、またはチェックに interval を使用する必要がありますか?

4

2 に答える 2

2

いつでも好きなようにチェックしたい場合。インターバルを使用する必要があります。バインドはイベントのバインドにのみ使用できます。clickmouseenterなどのように。

要素がいつクラスを取得するかを知りたい場合。次のようなものを使用する必要があります。

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 に答える