Notikumu deleģēšana JavaScript

Iepriekšējā nodarbībā tika aprakstīta problēma, kas rodas, pievienojot jaunus elementus, un piedāvāts tās risinājums. Šajā nodarbībā mēs apskatīsim veiksmīgāku veidu, kā apiet šo problēmu - notikumu deleģēšanu. Apskatīsim to tuvāk.

Kā jūs jau zināt, noklikšķinot uz li, mēs vienlaikus noklikšķinām arī uz ul. Tas ir iespējams, pateicoties notikumu izplatīšanās (burbuļošanās) mehānismam. Mēs varam izmantot to savam uzdevumam: pievienosim notikumu nevis katram li, bet to vecākam elementam ul:

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

Tagad notikuma apstrādes funkcijā this norādīs uz elementu, kuram ir piesaistīta apstrādes funkcija, bet event.target - uz elementu, kurā notika notikums:

javascriptlist.addEventListener('click', function(event) {
  console.log(this);         // mūsu saraksts
  console.log(event.target); // saraksta punkts
});

Padarīsim tā, lai li, uz kuras notika klikšķis, beigās tiktu pievienots izsaukuma zīme:

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

Atkārtojiet iepriekš minēto risinājumu. Pārliecinieties, ka arī jaunie li reaģēs uz klikšķi.