jQuery:カスタムイベントでevent.preventdefault()を使用するにはどうすればよいですか?
-
19-09-2019 - |
質問
トリガーコードでそれをどのように知ることができますか preventDefault
呼ばれましたか?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
解決
Trigger()はイベントオブジェクトを取得することもできます。したがって、イベントオブジェクトを作成できれば、
var event = jQuery.Event("customEvent");
$(document).trigger(event);
次に、トリガーの後に確認して、deberddefault()がそう呼ばれているかどうかを確認できます。
var prevented = event.isDefaultPrevented();
他のヒント
デフォルトが防止されているかどうかを確認する方法を尋ねている場合は、以下を使用してください。
event.isDefaultPrevented()
これは、PreventDefault()が呼び出されたかどうかに基づいて、「True」または「False」を返します。
カスタムイベントには、発生するデフォルトのアクションがありません。(カスタムです)。
一方、このイベントの泡立ち効果を他の人に止めたい場合は、 triggerHandler
階層まで泡立ちません。
私の知る限り、「PreventDefault()」の呼び出しは、アンカータグのクリックやテキストフィールドのキープレスのようなものに対するネイティブブラウザの応答を防ぐことに関するものです。イベント処理サイクルが終了すると、終了します。構成されたイベントでは、Native Browserの機能ではなく、JQueryイベント処理システムに関するものであるため、それはまったく効果があるとは思いません。
あなたのコードは、「外の世界」と通信するために、どこかに何らかのフラグを設定することができます。
編集] OOHハンドラーに、外部コードが見つけることができる場所にイベントオブジェクトへの参照を隠してから、「isDefaultPrevented()」で外部から確認することができます。しかし、それがうまくいくかどうかはわかりません。