JavaScript-də dövr içində hadise emalçılarının ayrılması
İndi tutaq ki, bir deyil, bir neçə element var. Məsələn, bir neçə abzas:
<p>text1</p>
<p>text2</p>
<p>text3</p>
Gəlin bu abzasların hər birinə klik hadisesi emalçısı ilə
func funksiyasını bağlayaq:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', func);
}
function func() {
console.log(this.textContent);
}
İndi gəlin kodu elə dəyişək ki, hər abzas yalnız ona edilən ilk klikə reaksiya versin. Bunun üçün abzaza klik edəndə ona bağlanmış emalçını ayıracağıq. Eyni zamanda, ayrılma xüsusi olaraq bu abzasdan olacaq, digərlərini heç cür etkilemeyecek.
Artıq bildiyiniz kimi, hadisenin baş verdiyi
elementi emalçı funksiyasında
this vasitəsilə əldə etmək olar.
Bu o deməkdir ki, emalçını this-dən
ayırmağı yerinə yetirmək lazımdır,
burada olduğu kimi:
let elems = document.querySelectorAll('p');
for (let elem of elems) {
elem.addEventListener('click', func);
}
function func() {
console.log(this.textContent);
this.removeEventListener('click', func); // emalçını ayırırıq
}
Abzaslar verilmişdir. İstənilən abzasa klik edəndə onun sonuna nida işareti əlavə edin. Elə edin ki, bu əlavə etmə yalnız ilk klikdə baş versin.