Delegiranje dogodkov v JavaScript

V prejšnji lekciji je bil opis problem, ki se pojavi pri dodajanju novih elementov, in predstavljena njegova rešitev. V tej lekciji bomo obravnavali boljšo metodo za obvod problema - delegiranje dogodkov. Oglejmo si ga.

Kot že veste, s klikom na li, hkrati kliknemo tudi na ul. To je mogoče zaradi bubble-up (širjenja) dogodkov. To lahko uporabimo za rešitev naše naloge: dogodek ne dodamo vsaki li, ampak njihovemu starševskemu elementu ul:

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

Sedaj bo v obravnavavcu dogodka this kazal na element, na katerega je vezan obravnavavec, event.target pa - na element, v katerem se je dogodek zgodil:

javascriptlist.addEventListener('click', function(event) {
  console.log(this);         // naš seznam
  console.log(event.target); // element seznama
});

Naredimo tako, da se li, na kateri se je zgodil klik, na konec doda klicaj:

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

Ponovite predstavljeno rešitev. Prepričajte se, da bodo na klik odgovarjale tudi nove li.