⊗jsPmOEBTE 424 of 505 menu

Uzyskiwanie elementu docelowego podczas propagacji zdarzeń

Załóżmy, że mamy dwa elementy: div i akapit p, znajdujący się wewnątrz tego diva:

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

Pobierzmy referencję do naszego diva do zmiennej:

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

Dodajmy naszym znacznikom jakieś style:

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

Załóżmy teraz, że na diva jest zawieszony nasłuchiwacz kliknięcia:

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

Z powodu tego, że nasz div ma padding, gdy klikamy w diva, możemy trafić w akapit, albo możemy trafić w miejsce, gdzie tego akapitu nie ma, czyli bezpośrednio w diva.

Przy tym w nasłuchiwaczu kliknięcia this zawsze będzie wskazywać na ten element, na który jest zawieszony nasłuchiwacz. W naszym przypadku to nasz div:

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

Jednakże, możemy uzyskać dokładnie ten znacznik, w którym zdarzenie wystąpiło. W tym celu możemy sprawdzić, co znajduje się w event.target:

div.addEventListener('click', function(event) { console.log(event.target); // albo div, albo akapit });

Można rozróżnić te dwa warianty za pomocą warunków:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.tagName === 'DIV') { console.log('kliknięcie dokładnie w diva'); } if (event.target.tagName === 'P') { console.log('kliknięcie dokładnie w akapit'); } });

Zamiast tagName można użyć matches:

let div = document.querySelector('div'); div.addEventListener('click', function(event) { if (event.target.matches('div')) { console.log('kliknięcie dokładnie w diva'); } if (event.target.matches('p')) { console.log('kliknięcie dokładnie w akapit'); } });

Dane są następujące elementy:

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

Zawieś na diva nasłuchiwacz kliknięcia. W tym nasłuchiwaczu określ, w którym ze znaczników wystąpiło zdarzenie.

Zmodyfikuj poprzednie zadanie. Spraw, aby po kliknięciu w li, na jej koniec dodawał się wykrzyknik, a po kliknięciu w ul w konsoli wypisywała się informacja o tym.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć