7

event.preventDefault()要素のデフォルトのイベント動作をオーバーライドします。デフォルトのものだけでなく、すべてのクリックバインディングを一時的にオーバーライドするにはどうすればよいですか? または、バインドを解除して後で使用できるように、すべてのクリック バインドを保存する方法はありますか?

これは適切な答えではありませんが、回避策です。必要なハンドラーをスタックの一番上にプッシュし、return false を使用して他のバインディングを停止できます。https://github.com/private-face/jquery.bind-first

4

3 に答える 3

1

を使用すると、泡立つ前にクリックをキャッチできます。

element.addEventListener(type, listener[, useCapture]);

このようにして、jQuery クリック ハンドラーをトリガーする前にクリックを「キャッチ」できます (これは、このスタック オーバーフローの質問から取得しました:

document.addEventListener('click', function(e) {
    e.stopPropagation();
}, true);

詳細 (および一部の IE < 9 のサポート) については、developer.mozillaを参照してください。

編集: Mozilla の useCapture に関する詳細:

true の場合、useCapture は、ユーザーがキャプチャを開始したいことを示します。キャプチャを開始すると、指定されたタイプのすべてのイベントが登録済みのリスナーにディスパッチされてから、DOM ツリー内のその下にある EventTarget にディスパッチされます。ツリーを上方にバブルするイベントは、キャプチャを使用するように指定されたリスナーをトリガーしません。詳細な説明については、DOM レベル 3 イベントを参照してください。指定しない場合、useCapture はデフォルトで false になります。

于 2013-11-07T20:10:06.940 に答える