私のコードでは、要素のcssの高さを100pxに変更する要素のイベントハンドラーが設定されています。別の場所で、特定の条件が満たされた場合に別のイベントハンドラーを実行する必要があります。これにより、前のイベントハンドラーがオーバーライドされ、高さが200pxに変更されます。
それを行う方法、または要素に対して以前に設定されたすべてのイベントハンドラーをクリアする方法はありますか?
私のコードでは、要素のcssの高さを100pxに変更する要素のイベントハンドラーが設定されています。別の場所で、特定の条件が満たされた場合に別のイベントハンドラーを実行する必要があります。これにより、前のイベントハンドラーがオーバーライドされ、高さが200pxに変更されます。
それを行う方法、または要素に対して以前に設定されたすべてのイベントハンドラーをクリアする方法はありますか?
はい、使用するだけ.off()
です
$('selector').off('eventname')
これはちょっとしたハックですが、他の人のコードを直接変更することなくハッキングしようとしているように思われるので、それに頼らなければならないかもしれません。
それらの後に何かを呼び出す必要がdocument.ready()
あり、ステートメントの順序を制御しない場合はdocument.ready()
、document.readyハンドラー内に次のような短いタイムアウトでコードを配置できます。
$(document).ready(function() {
setTimeout(function() {
$('selector').off('eventname').on(your event handler here);
}, 1);
});
は、setTimeout()
すべてのdocument.ready()ハンドラーが実行された後に実行されます。
別の方法:
$(window).on('load', function() {
$('selector').off('eventname').on(your event handler here);
});
ドキュメントの準備ができた後にロードが実行されます