JavaScriptтеги окуяларды жалпы делегирование
Акыркы сабакта көрсөтүлгөн код иштейт, бирок, кемчиликтери жок эмес. Келгиле, бул кемчиликтерди карап чыгалы жана андан да жалпы чечим жазалы.
Биздин коддун кемчилиги мындай учурда пайда болот,
liдин ичинде башка кучактуу
тегдер болгондо. Биздин учурда бул тегдер
i болсун:
<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>
Бул учурда i тегине басуу
i тегинин аягына
үндө белгисин кошуп койот, li тегине эмес,
биз каалагандай - анткени event.target
окуя болгон так ошол тегге туура келет.
Көйгөй closest методу менен чечилет:
list.addEventListener('click', function(event) {
let li = event.target.closest('li');
if (li) {
li.innerHTML = li.innerHTML + '!';
}
});
Көрсөтүлгөн чечимди кайталаңыз.