こんにちは、さち です。
今回は、JavaScript で「親要素」に設定したクリックイベント addEventListener
で、「子要素」をクリックしたきも target
が「親要素」になるようにする方法を書いていきます。
サンプルコード
HTML
<div id="parent"> <p id="child"></p> </div>
JavaScript
const parent = document.getElementById('parent'); parent.addEventListener('click', (e)=> { alert(e.target.id); });
id="parent"
の要素を取得して、「クリック」されるとその要素の id
を「アラート」で表示するイベントを設置しました。
期待する挙動としては、常に「parent」と表示されることです。
結果
「親要素」をクリックしたときは期待通りの挙動をしますが、「子要素」をクリックしたときは「子要素」の「id」が表示されてしまいます。
「子要素」をクリックしたときも「親要素」の「id」を表示するように、コードを修正していきましょう。
修正したコード
HTML
<div id="parent"> <p id="child"></p> </div>
JavaScript
const parent = document.getElementById('parent');
parent.addEventListener('click', (e)=> {
alert(e.currentTarget.id);
});
target
だった部分を currentTarget
に変更しました。
結果
-
id="parent"
の要素の上で「クリック」すると……
- 「parent」と表示されます。
- 今度は
id="child"
の要素の上で「クリック」すると……
- この場合も「parent」になります。期待通りの動作にできました。
「target」「currentTarget」の違い
target
は、イベントの発火場所(クリックされた場所)を指します。
currentTarget
は、イベントの内容が設置されている場所( addEventListener
が設置された場所)を指します。
この違いを適宜使い分けましょう。
コメント