イベントリスナーを使うときに理解しておきたいこと

みなさんはJavaScriptのイベントについてちゃんと理解していますか?

なんとなく使えているかもしれませんが、たまに度ツボにはまってしまったり、どうしても思った通りの動作にならないことはありませんか?

ぼくは今までなんとなくで使っていましたが、イベントの伝播というものが分かるようになって、よりよいコードが書けるようになった気がするのでご紹介します。

  1. イベントターゲットの親要素のイベントリスナーも呼び出される

イベントターゲットの親要素のイベントリスナーも呼び出される

イベントの対象の要素のことをイベントターゲットといい、基本的にはこのイベントターゲットを想定してイベントリスナーを設定することが多いと思いますが、イベントターゲットの親要素にリスナーを設定することで同時に、その親要素に対してなにか処理をすることも出来るのです。

ここで、ひとつ疑問が浮かぶかもしれません。どちらが先に実行されるのか?
下の画像の順でイベントリスナーが呼び出されます。

Copyright © 2016 World Wide Web Consortium, (MIT, ERCIM, Keio, Beihang)

windowから子要素に降りていき、ターゲットに行った後で、もう一度windowまでたどっていきます。
つまり、親要素については2つのタイミングを選ぶことが出来ます。
2つのタイミングの選び方ですが、イベントリスナーの第三引数に真偽値を指定することで決めることが出来ます。

trueの場合は、キャプチャーフェーズで、falseの場合はバブリングフェーズで呼び出されます。
ちなみに、初期値はfalseなので、なにも指定しなかった場合はバブリングフェーズで、ということになります。

最近の記事