Das ist mehr eine Frage darüber, was in meinem Code vor sich geht. Es funktioniert, aber ich brauche ein wenig Erleuchtung ...JavaScript, jQuery und 'das': was ist hier los?
Ich benutze jQuery, um einen Ereignis-Listener auf einem Texteingabeelement zu erstellen. Der HTML-Code wäre einfach wie folgt:
<input type="text" id="autocomplete" size="50" />
Ich brauche Ereignisse zu empfangen, wenn jemand Typen etwas in diesem Bereich, und mit Ereignissen überflutet zu vermeiden, dass ich den Ereignis-Listener up mit einem Timer eingestellt haben, so dass mein Fall Zuhörer Code läuft nur, wenn der Benutzer etwas eingeben nicht für 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);
});
Dies funktioniert, aber ich bin mir nicht ganz sicher, ob ich verstehe hier alles los ist. Wie Sie aus dem obigen Codeabschnitt sehen, muss ich den ID
des Timers verfolgen, der am letzten Ereignis erstellt wurde. Ich mache das, indem ich es in this.timer
speichern. Das Schlüsselwort this
bezieht sich in diesem Fall jedoch auf das Eingabeelement. Dies ist, was console.log
Ausgänge:
<input type="text" id="autocomplete" size="50" />
Ist es OK, um den Timer ID
auf dem Eingangselement zu speichern? Soweit ich weiß, könnte ich etwas Dummes tun. Ist das "Best Practice", oder wäre das etwas ganz anderes?
Danke für Ihre Antwort! – sbrattla