Delegování událostí v JavaScriptu

V předchozí lekci byl popsán problém, vznikající při přidávání nových prvků, a uvedeno jeho řešení. V této lekci prozkoumáme vhodnější způsob, jak se problému vyhnout - delegování událostí. Pojďme si jej rozebrat.

Jak již víte, kliknutím na li zároveň klikáme i na ul. To je možné díky propagaci událostí. Můžeme to využít k řešení našeho úkolu: připojíme událost ne na každou li, ale na jejich rodiče ul:

javascriptlist.addEventListener('click', function() {
  
});

Nyní v obslužné rutině události this bude ukazovat na prvek, ke kterému je připojen obslužný kód, a event.target - na prvek, ve kterém došlo k události:

javascriptlist.addEventListener('click', function(event) {
  console.log(this);         // náš seznam
  console.log(event.target); // položka seznamu
});

Udělejme to, aby li, na které došlo ke kliknutí, přidala na konec vykřičník znak:

javascriptlist.addEventListener('click', function(event) {
  event.target.textContent = event.target.textContent + '!';
});
Задание 1

Zopakujte uvedené řešení. Přesvědčte se, že nové li budou také reagovat na kliknutí.