Delegiranje događaja u JavaScript

U prethodnoj lekciji je opis problem koji se javlja pri dodavanju novih elemenata, i dato je njegovo rešenje. U ovoj lekciji ćemo razmotriti bolji način da se zaobiđe problem - delegiranje događaja. Hajde da ga razumemo.

Kao što već znate, klikajući na li, mi istovremeno klikamo i na ul. Ovo je moguće zahvaljujući izbijanju (bubbling) događaja. Mi možemo iskoristiti ovo da rešimo naš zadatak: postavimo događaj ne na svaku li, već na njihovog roditelja ul:

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

Sada u obrađivaču događaja this će pokazivati na element kome je vezan obrađivač, a event.target - na element u kome se događaj desio:

javascriptlist.addEventListener('click', function(event) {
  console.log(this);         // naš spisak
  console.log(event.target); // stavka spiska
});

Učinimo da li, na kojoj se desio klik, na kraj doda uzvičnik:

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

Ponovite navedeno rešenje. Uverite se, da će nove li takođe reagovati na klik.