JavaScript-də Universal Hadisə Delegasiyası

Əvvəlki dərsdə verilmiş kod işləkdir, lakin, çatışmazlıqları yox deyil. Gəlin bu çatışmazlıqları araşdıraq və daha universal həll yazaq.

Kodumuzun çatışmazlığı o zaman özünü göstərəcək ki, li-nin daxilində bəzi daxili teqlər olsun. Bizim vəziyyətimizdə bunlar i teqləri olsun:

html<ul>
  <li>item <i>italic</i> item</li>
  <li>item <i>italic</i> item</li>
  <li>item <i>italic</i> item</li>
  <li>item <i>italic</i> item</li>
  <li>item <i>italic</i> item</li>
</ul>

Bu halda i teqinə klikləmək i teqinin sonunda nida işarəsi əlavə edilməsi ilə nəticələnəcək, li teqinin sonunda deyil, istədiyimiz kimi - çünki event.target hadisənin baş verdiyi dəqiq teq olur.

Problem closest metodu ilə həll edilə bilər:

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

Göstərilən həlli təkrarlayın.