7

clickMeteorのイベントマップを使用して、いくつかの基本的なイベントをフックしました。

処理された後、イベントの伝播を停止するにはどうすればよいですか?

Meteorのドキュメントには次のように記載されています

現在、イベントハンドラーはjQueryに接続されており、受け取るイベントオブジェクトはjQueryイベントオブジェクトです。

ただし、どちらreturn falseも機能していないe.stopPropagation()ようです。

4

2 に答える 2

6

現在、stopPropagationは限られた状況で機能します。2つのハンドラー間で伝播を停止するには、ハンドラーを異なるテンプレートで指定する必要があり、内部テンプレートと外部テンプレートの間にDOMノードコンテナーが介在している必要があります。修正は現在開発中であり、次のリリースに入る予定です。

コードの要点を投稿して、特定のケースが確実に追加されるようにできますか?

回避策として、e.stopImmediatePropagation()を試すことができます。これは、jQueryによって提供され、他のハンドラーが実行されないようにする必要があります。

于 2012-05-02T22:45:52.810 に答える
2

私はこれを自分で調べているときにこの質問に出くわしました。BlazeEventMapsのドキュメントはこちらです。

流星のこの問題のためにあなたはあなたが望むものに応じて2つの機能を考慮する必要があります:

stopPropagation()

イベントが他の要素に伝播(バブリング)するのを防ぎます。このイベントマップおよび他のイベントマップでは、同じ要素に一致する他のイベントハンドラーが引き続き発生します。

stopImmediatePropagation()

このイベントマップ内の他のハンドラー、バブリングによって到達したハンドラー、および他のイベントマップ内のハンドラーを含め、すべての追加のイベントハンドラーがこのイベントで実行されないようにします。

私が望んでいたのは、バブリングを停止し、他のMeteorイベントハンドラーへの伝播を停止することでした。event.stopImmediatePropagation()トリックもそうしましたが、上記のように実際には回避策ではありません。

于 2017-04-17T18:44:50.650 に答える