ブラウザのJavaScriptの話です。 イベントハンドラーAの処理があるときはイベントハンドラーBの処理を止めたいです。
イベントハンドラーAは新しいNodeを作って選択します。 イベントハンドラーBは選択を解除します。
期待する動作は、新しいNodeができて選択されてほしいです。今はイベントハンドラーBが発火して、新しいNodeの選択が解除されます。
最初、stopPropagationを使おうと思いましたが、どちらのイベントハンドラーもリッスンしているElementは同じのため、伝播タイミングが同じなので、ダメでした。 とりあえず、イベントハンドラーAでイベントオブジェクトにフラグをたてて、イベントハンドラーBでフラグチェックすれば、期待通りに動作します。 もう少しかっこいい実装方法はないものでしょうか?
- イベントオブジェクトではない、何かで状態を持つ
- イベントハンドラーAのリッスンするElementを、子Elementにする(で、stopPropagationを使う)
- イベントハンドラーBをイベントハンドラーAより先に発火させる
結局2にしました。