html
1 <div id="display-area"> 2 <p id="targetBtn">- CLICK -</p> 3 <div> 4 <p>texttexttexttexttexttexttexttext</p> 5 <p>texttexttexttexttexttexttexttext</p> 6 <div> 7 <p>descriptiondescriptiondescription</p> 8 <img src="./img/img1.jpg" alt=""> 9 </div> 10 </div> 11 <div> 12 <p>texttexttexttexttexttexttexttext</p> 13 <p>texttexttexttexttexttexttexttext</p> 14 <div> 15 <input type="text" name="input"> 16 <button>send</button> 17 <div> 18 <p>errorerrorerrorerrorerror</p> 19 <p>errorerrorerrorerrorerror</p> 20 </div> 21 </div> 22 </div> 23 </div>
クリックした要素がある要素内にある要素なのかというチェックを行いたいです。
「ある要素内にある要素」というのは直下の子要素のみならず、孫要素、曾孫要素...も全て含む。
今回の場合だと上記のHTMLのどこをクリックしてもクリックした要素が#display-area又は#display-area内の要素と判定してほしいです。
全ての要素にclassやidをつけて、ある決めたワードがclass又はidに含まれているかというチェックを考えました。
html
1 <div class="display-area" id="display-area"> 2 <p class="display-area" id="targetBtn">- CLICK -</p> 3 <div class="display-area"> 4 <p class="display-area">texttexttexttexttexttexttexttext</p> 5 <p class="display-area">texttexttexttexttexttexttexttext</p> 6 <div class="display-area"> 7 <p class="display-area">descriptiondescriptiondescription</p> 8 <img class="display-area" src="./img/img1.jpg" alt=""> 9 </div> 10 </div> 11 <div class="display-area"> 12 <p class="display-area">texttexttexttexttexttexttexttext</p> 13 <p class="display-area">texttexttexttexttexttexttexttext</p> 14 <div class="display-area"> 15 <input class="display-area" type="text" name="input"> 16 <button class="display-area">send</button> 17 <div class="display-area"> 18 <p class="display-area">errorerrorerrorerrorerror</p> 19 <p class="display-area">errorerrorerrorerrorerror</p> 20 </div> 21 </div> 22 </div> 23 </div>
js
1window.addEventListener("click", (e) => { 2 const el = e.target; 3 if (el.classList.contains("display-area")) { 4 console.log("TRUE"); 5 // 何かしらの処理 6 } 7});
これではとても不効率で見栄えも悪いなと思っています。
なので、これより簡単な書き方があればご教授ください。
回答2件
あなたの回答
tips
プレビュー