⊗jsPmOEBTE 424 of 505 menu

Obținerea elementului țintă la bubbling-ul evenimentelor

Să presupunem că avem două elemente: div și un paragraf p, aflat în interiorul acestui div:

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

Să obținem o referință către div-ul nostru într-o variabilă:

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

Să adăugăm câteva stiluri tag-urilor noastre:

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

Să presupunem că acum pe div este atașat un handler de click:

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

Datorită faptului că div-ul nostru are padding, atunci când facem click pe div, putem da peste paragraf, sau putem da în locul unde acest paragraf nu există, adică direct pe div.

În acest caz, în handler-ul de click this va indica întotdeauna către elementul pe care este atașat handler-ul. În cazul nostru acesta este div-ul nostru:

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

Cu toate acestea, putem obține exact tag-ul în care a avut loc evenimentul. Pentru aceasta putem verifica ce se află în event.target:

div.addEventListener('click', function(event) { console.log(event.target); // fie div-ul, fie paragraful });

Putem distinge aceste două variante folosind condiții:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('click exact pe div'); } if (event.target.tagName === 'P') { console.log('click exact pe paragraf'); } });

Putem folosi în loc de tagName matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('click exact pe div'); } if (event.target.matches('p')) { console.log('click exact pe paragraf'); } });

Sunt date următoarele elemente:

<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; }

Atașați pe div un handler de click. În acest handler determinați în care dintre tag-uri s-a declanșat evenimentul.

Modificați problema precedentă. Faceți astfel încât la click pe li, la sfârșitul acesteia să se adauge un semn de exclamare, iar la click pe ul în consolă să se afișeze informația despre aceasta.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge