Одврзување на обработувачи на настани во циклус во 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); // го одврзуваме обработувачот
}
Дадени се параграфи. При клик на кој било параграф додадете му на крајот извичник. Направете го ова така што додавањето ќе се случи само при првото кликнување.