Delegovanie udalostí v JavaScripte

V predchádzajúcej lekcii bol opísaný problém, ktorý vzniká pri pridávaní nových prvkov, a bolo uvedené jej riešenie. V tejto lekcii skúmame vhodnejší spôsob, ako obísť problém - delegovanie udalostí. Poďme si ho rozobrať.

Ako už viete, kliknutím na li sme súčasne klikli aj na ul. To je možné vďaka prebublávaniu udalostí. Môžeme to využiť na riešenie našej úlohy: udalosť nepridáme na každú li, ale na ich rodiča ul:

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

Teraz v obslužnej rutine udalosti this bude ukazovať na prvok, ku ktorému je priradená obslužná rutina, a event.target - na prvok, v ktorom sa udalosť stala:

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

Urobme to tak, aby li, na ktorej došlo ku kliknutiu, na koniec pridala výkričník:

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

Zopakujte uvedené riešenie. Presvedčte sa, že nové li budú tiež reagovať na kliknutie.