To jest bardziej pytanie o to, co się dzieje w moim kodzie. To działa, ale potrzebuję trochę oświecenia ...JavaScript, jQuery i "this": co tu się dzieje?
Używam jQuery do utworzenia detektora zdarzeń na wejściowym elemencie tekstowym. HTML byłoby po prostu w następujący sposób:
<input type="text" id="autocomplete" size="50" />
muszę odbierać zdarzenia, gdy wpisze coś w tej dziedzinie, i aby uniknąć zalane imprez Mam zestaw detektor zdarzeń z zegarem, tak, że moja impreza Kod słuchacz pracuje tylko wtedy, gdy użytkownik nie wpisuj nic dla 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);
});
To działa, ale nie jestem pewien, czy rozumiem, wszystko dzieje się tutaj. Jak widzisz z powyższego fragmentu kodu, muszę śledzić ID
timera, który został utworzony na ostatnim wydarzeniu. Robię to, przechowując go w this.timer
. Jednak słowo kluczowe this
w tym przypadku odnosi się do elementu wejściowego. To co console.log
wyjścia:
<input type="text" id="autocomplete" size="50" />
to jest ok, aby zapisać timer ID
na elemencie wejściowym? Z tego co wiem, mógłbym robić coś głupiego. Czy to "najlepsza praktyka", czy może to coś zupełnie innego?
Dzięki za odpowiedź! – sbrattla