⊗jsPmOEBTE 424 of 505 menu

การได้มาซึ่งองค์ประกอบเป้าหมายเมื่อเหตุการณ์แพร่กระจาย

สมมติว่าเรามีสององค์ประกอบ: div และย่อหน้า p ที่อยู่ภายใน div นั้น:

<div> <p></p> </div>

มาดึงลิงก์ไปยัง div ของเราเก็บไว้ในตัวแปร:

let div = document.querySelector('div');

เพิ่มสไตล์บางอย่างให้กับแท็กของเรา:

div { padding: 20px; border: 1px solid red; } p { width: 200px; height: 200px; border: 1px solid green; }

สมมติว่าตอนนี้มีตัวจัดการเหตุการณ์คลิกติดอยู่บน div:

div.addEventListener('click', function() { console.log('click'); });

เนื่องจาก div ของเรามี padding ดังนั้นเมื่อเราคลิกที่ div เราอาจจะคลิก ที่ย่อหน้า หรือเราอาจจะคลิกในตำแหน่งที่ไม่มี ย่อหน้านั้น นั่นคือคลิกที่ตัว div โดยตรง

ในขณะที่ตัวจัดการเหตุการณ์คลิก this จะชี้ไปยังองค์ประกอบที่ตัวจัดการนั้นถูกติดตั้งเสมอ ในกรณีของเรา นี่คือ div ของเรา:

div.addEventListener('click', function() { console.log(this); // div });

อย่างไรก็ตาม เราสามารถได้มาเฉพาะแท็ก ที่เหตุการณ์เกิดขึ้นจริงๆ ได้ สำหรับสิ่งนี้เรา สามารถดูว่าอะไรอยู่ใน event.target:

div.addEventListener('click', function(event) { console.log(event.target); // อาจเป็น div หรือย่อหน้า });

สามารถแยกความแตกต่างระหว่างสองกรณีนี้ได้โดยใช้ เงื่อนไข:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('คลิกที่ div โดยตรง'); } if (event.target.tagName === 'P') { console.log('คลิกที่ย่อหน้าโดยตรง'); } });

สามารถใช้ matches แทน tagName ได้:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('คลิกที่ div โดยตรง'); } if (event.target.matches('p')) { console.log('คลิกที่ย่อหน้าโดยตรง'); } });

มีองค์ประกอบดังต่อไปนี้:

<div> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </div> div, ul, li { padding: 20px; } div { border: 1px solid red; } ul { border: 1px solid orange; } li { border: 1px solid green; }

ติดตั้งตัวจัดการเหตุการณ์คลิกบน div ใน ตัวจัดการนี้ จงพิจารณาว่าเหตุการณ์เกิดขึ้นในแท็กใด

ปรับเปลี่ยนงานก่อนหน้า จงทำให้ เมื่อคลิกที่ li จะมีเครื่องหมายอัศเจรีย์เพิ่มที่ท้าย และเมื่อคลิก ที่ ul จะแสดงข้อมูลเกี่ยวกับสิ่งนี้ในคอนโซล

ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ