JavaScriptda Universal Hodisa Delegatsiyasi
Oldingi darsda keltirilgan kod ishlaydi, biroq, kamchiliklarsiz emas. Keling, ushbu kamchiliklarni ko'rib chiqaylik va yanada universal yechim yozamiz.
Bizning kodimizning kamchiligi shunda namoyon bo'ladiki,
li ichida qandaydir ichki
teglar bo'lganda. Bizning holatda bular i
teglari bo'lsin:
<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>
Bunda i tegiga bosish
i tegining oxiriga
undov belgisini qo'shishga olib keladi, li
tegining oxiriga emas, biz xohlagandek -
chunki event.target
aynan hodisa sodir bo'lgan tegni o'z ichiga oladi.
Muammoni closest metodi yordamida hal qilish mumkin:
list.addEventListener('click', function(event) {
let li = event.target.closest('li');
if (li) {
li.innerHTML = li.innerHTML + '!';
}
});
Keltirilgan yechimni takrorlang.