Questa è più una domanda su cosa sta succedendo nel mio codice. Funziona, ma ho bisogno di un po 'di illuminazione ...JavaScript, jQuery e "questo": cosa sta succedendo qui?
Sto usando jQuery per creare un listener di eventi su un elemento di input del testo. Il codice HTML sarebbe semplicemente come segue:
<input type="text" id="autocomplete" size="50" />
Ho bisogno di ricevere eventi ogni volta che qualcuno digita qualcosa in quel campo, e per evitare di essere inondati di eventi ho impostato il listener di eventi con un timer in modo che il mio evento codice ascoltatore viene eseguito solo se l'utente non ha digitare nulla per 125 ms:
jQuery('#autocomplete').keyup(function(e) {
e.preventDefault();
clearTimeout(this.timer);
this.timer = setTimeout(function() {
jQuery.getJSON([URL goes here], function(data) {
// processing of returned data goes here.
}
}, 125);
console.log(this);
});
Questo funziona, ma non sono del tutto sicuro se ho capito tutto quello che succede qui. Come si vede dal codice di cui sopra, ho bisogno di tenere traccia dello ID
del timer che è stato creato sull'ultimo evento. Lo faccio memorizzandolo in this.timer
. Tuttavia, la parola chiave this
in questo caso si riferisce all'elemento di input. Questo è ciò che console.log
uscite:
<input type="text" id="autocomplete" size="50" />
E 'ok per memorizzare il timer ID
sull'elemento di ingresso? Per quel che ne so, potrei fare qualcosa di stupido. Questa è la "migliore pratica" o sarebbe qualcosa di molto diverso?
Grazie per la risposta! – sbrattla