ここでは、jQueryが正しいツールではないと思います。あなたの問題は、JavaScriptが何かをしている間にイベントがキューに入れられることです。
したがって、本当に必要なのは、「戻ったときに、キューに入れられたすべてのクリックイベントを飲み込む」などです。
クリックハンドラーの再バインドを新しい関数に移動し、タイマーで呼び出すことをお勧めします。これにより、ブラウザはキューに入れられたイベントを処理できます。
また、バインドを解除することも間違ったアプローチである可能性があります。常に同じハンドラーを使用している場合は、それを次のskip
プロパティを持つオブジェクトに変換します。
skip: false,
run: function( e ) {
if (this.skip) return;
this.skip = true;
... do something ...
var self = this;
setTimeout( function() { self.skip = false; }, 50 );
}
[編集]別の方法:すべてのリンクが1つのHTML要素(親div
など)にある場合は、その要素のクリックハンドラーをインストールして何もしないようにすることができます。それはまたクリックイベントを飲み込むでしょう。関数から戻った後にイベントが確実に処理されるようにするには、タイムアウトハンドラーが必要です。