Αποδέσμευση Χειριστών Συμβάντων σε Βρόχο σε 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); // αποδεσμεύουμε τον χειριστή
}
Δίνονται παράγραφοι. Πατώντας σε οποιαδήποτε από τις παραγράφους προσθέστε στο τέλος της ένα θαυμαστικό. Κάντε έτσι ώστε αυτή η προσθήκη να συμβαίνει μόνο στην πρώτη πτώση.