JavaScript addEventListener()で親要素のイベントを実行しないようにする

環境
Google Chrome 111.0.5563.65
Windows 10 Home 64bit

書式
1.event.target
イベントが発生した要素
2.event.currentTarget
イベントが登録されている要素
3.親要素のイベントの登録
document.querySelector(`.親クラス`).addEventListener(`click`,() => {処理コード

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<!DOCTYPE html>
<html>
<body>
<style>
/*親要素のCSS*/
.pA {
width: 150px;
padding: 30px;
background: skyblue;
}
/*子要素のCSS*/
.pAa {
width: 150px;
height: 100px;
background:red;
}
</style>
<div class="pA">
<div class="pAa">子要素</div>
</div>
<script>
/*クリックイベントで親要素のイベントを実行しない*/
document.querySelector(`.pA`).addEventListener(`click`,() => {
if(event.target == event.currentTarget) {
event.currentTarget.style.background ="yellow";
}
});
</script>
</body>
</html>
<!DOCTYPE html> <html> <body> <style> /*親要素のCSS*/ .pA { width: 150px; padding: 30px; background: skyblue; } /*子要素のCSS*/ .pAa { width: 150px; height: 100px; background:red; } </style> <div class="pA"> <div class="pAa">子要素</div> </div> <script> /*クリックイベントで親要素のイベントを実行しない*/ document.querySelector(`.pA`).addEventListener(`click`,() => { if(event.target == event.currentTarget) { event.currentTarget.style.background ="yellow"; } }); </script> </body> </html>
<!DOCTYPE html>
<html>
<body>

<style>
/*親要素のCSS*/
.pA {
  width: 150px;
  padding: 30px;
  background: skyblue;
}
/*子要素のCSS*/
.pAa {
  width: 150px;
  height: 100px;
  background:red;
}
</style>

<div class="pA">
  <div class="pAa">子要素</div>
</div>

<script>
/*クリックイベントで親要素のイベントを実行しない*/
document.querySelector(`.pA`).addEventListener(`click`,() => {
     if(event.target == event.currentTarget) {
      event.currentTarget.style.background ="yellow";
     }
});
</script>

</body>
</html>

実行結果
親要素「class="pA"」をクリックしてイベント登録されている要素の背景色が黄色になります。

JavaScript

Posted by arkgame