見出し画像

#96 stopPropagation()の必要性

よくあるmodalを作っていた。モーダルの中で拡大機能をつけようと、expandボタンを追加して押してみたら、モーダル自体が閉じてしまう現象が発生して、どうしたものかと、ためしにstopPropagation();をつけてみたら、無事に拡大できた。

これがイベントの伝播ってやつか。今まで情報としては知っていたけれど、実際にはじめて遭遇したので、メモしておく。

拡大機能の外側にあった、モーダル背景の閉じる機能が伝搬して動いてしまったのが要因。

デモ:8行目のe.stopPropagation();の先頭に//をつけると拡大機能が閉じる機能になる。(デフォはコメントにしてないから正しく動いている)


参考:イベントが発生すると、まずいちばん外側のWindowオブジェクトからターゲットまでキャプチャリングフェーズがあって、次にターゲットフェーズが来て、最後にバブリングフェーズで遡っていくとのこと。JSこんなことやってたのか。。。

stopPropagation()について つかいどころがいまいち分からないが、stopImmediatePropagetionというものもあるのか

これらの記事 Java Driveは、ちょくちょく参考にさせていただいているけど、作者さんの名前ずっとタラオイクラだと思ってたら違ってた。。

この記事が気に入ったらサポートをしてみませんか?