Իվենթների մշակիչների անջատում ցիկլում JavaScript-ում
Ենթադրենք, հիմա մենք ունենք ոչ թե մեկ տարր, այլ մի քանիսը: Օրինակ, մի քանի պարբերություններ:
<p>text1</p>
<p>text2</p>
<p>text3</p>
Եկեք այս պարբերություններից յուրաքանչյուրին կլիկի մշակիչով
կցենք func ֆունկցիան:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', func);
}
function func() {
console.log(this.textContent);
}
Հիմա եկեք փոխենք կոդն այնպես, որ յուրաքանչյուր պարբերություն արձագանքի միայն առաջին դրա վրա կատարված կլիկին: Դրա համար պարբերության վրա կլիկ անելիս մենք կանջատենք դրան կցված մշակիչը: Այս դեպքում անջատումը կկատարվի հենց այս պարբերությունից, առանց մյուսներին դիպչելու:
Ինչպես արդեն գիտեք, այն տարրը, որում տեղի է ունեցել
իրադարձությունը, կարելի է ստանալ մշակիչ ֆունկցիայի ներսում
this-ի միջոցով: Սա նշանակում է, որ պետք է
կատարել մշակիչի անջատում this-ից,
ահա այսպես:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', func);
}
function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // անջատում ենք մշակիչը
}
Տրված են պարբերություններ: Ցանկացած պարբերության վրա կլիկ անելիս ավելացրեք դրա վերջում բացականչական նշան: Կարգավորեք այնպես, որ այս ավելացումը տեղի ունենա միայն առաջին կլիկի դեպքում: