Optimizacija rukovaoca događaja u JavaScript-u
Preveliki broj rukovaoca, dodatih na elemente, troši puno radne memorije i dovodi do zastoja stranice.
Pogledajmo na primeru. Recimo da imamo neku listu:
<ul></ul>
Hvatanje reference na ovu listu u promenljivu:
let ul = document.querySelector('ul');
Popunimo sada našu listu tagovima li,
dodavši im rukovaoc za klik:
for (let i = 1; i <= 1000; i++) {
let li = document.createElement('li');
li.textContent = i;
ul.append(li);
li.addEventListener('click', function() {
console.log(this.textContent);
});
}
Kao rezultat, imamo 1000
rukovaoca. To je veoma mnogo. Za optimizaciju
možemo dodati samo jedan rukovalac
na tag ul, koristeći
delegiranje.
Hajde da to uradimo. Za početak jednostavno kreiramo stavke liste:
for (let i = 1; i <= 1000; i++) {
let li = document.createElement('li');
li.textContent = i;
ul.append(li);
}
A sada primenimo delegiranje rukovaoca događaja:
ul.addEventListener('click', function(event) {
let li = event.target.closest('li');
if (li) {
console.log(li.textContent);
}
});
Kreirajte HTML tabelu veličine 100
sa 100. Uredite tako da svaka
ćelija po kliku postane crvene boje.