私はこのようなコードが必要です
if($('#someElement').hasClass('test'))
{
...
}
しかし、特定の位置ではなく、しつこくチェックする必要があります。私の質問は、 bind のような関数が私を助けることができるか、またはチェックに interval を使用する必要がありますか?
私はこのようなコードが必要です
if($('#someElement').hasClass('test'))
{
...
}
しかし、特定の位置ではなく、しつこくチェックする必要があります。私の質問は、 bind のような関数が私を助けることができるか、またはチェックに interval を使用する必要がありますか?
いつでも好きなようにチェックしたい場合。インターバルを使用する必要があります。バインドはイベントのバインドにのみ使用できます。click
、mouseenter
などのように。
要素がいつクラスを取得するかを知りたい場合。次のようなものを使用する必要があります。
setInterval($.proxy(function(){
if( this.hasClass("test") && !this.data("classAdded") )
{
this.data("classAdded", true);
// Class added only triggers once.
}
}, $("#el")), 50);
カスタム イベントをバインドして、要素のクラスを変更するたびにトリガーするか、その内部で関数を呼び出す 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。そこで確認できます。)