35

呼び出されたトリガー コードをどのように知ることができpreventDefaultますか?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
4

5 に答える 5

48

trigger() はイベント オブジェクトを受け取ることもできるため、次のようにイベント オブジェクトを作成できる場合:

var event = jQuery.Event("customEvent");
$(document).trigger(event);

次に、トリガーの後で、 preventDefault() が次のように呼び出されたかどうかを確認できます。

var prevented = event.isDefaultPrevented();
于 2010-02-09T14:26:20.547 に答える
1

デフォルトが防止されているかどうかを確認する方法を尋ねている場合は、次を使用します。

event.isDefaultPrevented()

これは、 preventDefault() が呼び出されたかどうかに基づいて、「true」または「false」を返します。

編集: http://api.jquery.com/event.isDefaultPrevented/

于 2010-02-09T14:23:25.200 に答える
1

カスタム イベントには、発生するデフォルト アクションがいくつかありません (カスタム イベントです)。

一方、このイベントの他の人へのバブリング効果を止めたい場合はtriggerHandler、階層にバブリングしないものを見てください..

于 2010-02-09T14:26:54.047 に答える
0

私の知る限り、「preventDefault()」呼び出しは、アンカー タグのクリックやテキスト フィールドでのキー押下などに対するネイティブ ブラウザの応答を防止するためのものです。イベント処理サイクルが終了したら、終了です。でっち上げのイベントについては、jQuery イベント処理システムがすべてであり、ネイティブ ブラウザの機能が問題ではないため、まったく影響がないと思います。

「外の世界」と通信するために、コードで何らかのフラグをどこかに設定できます。

[編集] 外部コードが見つけられる場所にハンドラにイベント オブジェクトへの参照を隠してもらい、「isDefaultPrevented()」で外部からチェックすることができます。しかし、それがうまくいくかどうかはわかりません。

于 2010-02-09T14:19:07.657 に答える