click
Meteorのイベントマップを使用して、いくつかの基本的なイベントをフックしました。
処理された後、イベントの伝播を停止するにはどうすればよいですか?
Meteorのドキュメントには次のように記載されています
現在、イベントハンドラーはjQueryに接続されており、受け取るイベントオブジェクトはjQueryイベントオブジェクトです。
ただし、どちらreturn false
も機能していないe.stopPropagation()
ようです。
現在、stopPropagationは限られた状況で機能します。2つのハンドラー間で伝播を停止するには、ハンドラーを異なるテンプレートで指定する必要があり、内部テンプレートと外部テンプレートの間にDOMノードコンテナーが介在している必要があります。修正は現在開発中であり、次のリリースに入る予定です。
コードの要点を投稿して、特定のケースが確実に追加されるようにできますか?
回避策として、e.stopImmediatePropagation()を試すことができます。これは、jQueryによって提供され、他のハンドラーが実行されないようにする必要があります。
私はこれを自分で調べているときにこの質問に出くわしました。BlazeEventMapsのドキュメントはこちらです。
流星のこの問題のためにあなたはあなたが望むものに応じて2つの機能を考慮する必要があります:
stopPropagation()
イベントが他の要素に伝播(バブリング)するのを防ぎます。このイベントマップおよび他のイベントマップでは、同じ要素に一致する他のイベントハンドラーが引き続き発生します。
stopImmediatePropagation()
このイベントマップ内の他のハンドラー、バブリングによって到達したハンドラー、および他のイベントマップ内のハンドラーを含め、すべての追加のイベントハンドラーがこのイベントで実行されないようにします。
私が望んでいたのは、バブリングを停止し、他のMeteorイベントハンドラーへの伝播を停止することでした。event.stopImmediatePropagation()
トリックもそうしましたが、上記のように実際には回避策ではありません。