条件が真の場合、すべてのリンクで unbind() を使用し、1.5 秒後にリンクを再度バインドしたいと考えています。私はこれを試しましたが、うまくいきません:
if ( /*some condition*/) {
$('a').unbind();
setTimeout(function(){
$('a').bind();
}, 1500);
}
条件が真の場合、すべてのリンクで unbind() を使用し、1.5 秒後にリンクを再度バインドしたいと考えています。私はこれを試しましたが、うまくいきません:
if ( /*some condition*/) {
$('a').unbind();
setTimeout(function(){
$('a').bind();
}, 1500);
}
.unbind()
イベント ハンドラのピリオドが削除されるため、これを行うことはできません。それらに関するすべての情報が失われます。別のコピーをどこかに保管していない限り、元に戻すことはできません。
できることは、外部条件に基づいて動作を変更するような方法でハンドラーを作成することです。その後、この条件を切り替えて、ハンドラーがまったくバインドされていないかのように見せることができます。
例 (説明のみです。グローバルは使用しないでください!):
$('a').click(function() {
if (window.doNothing) {
return;
}
// do something
});
if ( /*some condition*/) {
window.doNothing = true;
setTimeout(function(){
window.doNothing = false;
}, 1500);
}
あなたbind
は特定の機能をする必要があります。