這更多的是關於我的代碼中發生了什麼的問題。它的工作原理,但我需要一點點啓發...JavaScript,jQuery和'this':這裏發生了什麼?
我正在使用jQuery創建文本輸入元素的事件偵聽器。該HTML只會如下:
<input type="text" id="autocomplete" size="50" />
我需要接受每當有人類型的東西到該領域,並避免與我設置的事件監聽了一個計時器事件淹沒事件,這樣我的事件監聽器的代碼只有在用戶沒有爲125毫秒鍵入任何運行:
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);
});
這工作,但我不能肯定,如果我明白了一切會在這裏。正如你從上面的代碼中看到的那樣,我需要跟蹤在最後一個事件中創建的定時器的ID
。我通過將它存儲在this.timer
中來做到這一點。但是,這種情況下的this
關鍵字指的是輸入元素。這是console.log
輸出:
<input type="text" id="autocomplete" size="50" />
是否確定存儲輸入元件上的計時器ID
?據我所知,我可能會做一些愚蠢的事情。這是「最佳做法」,還是會有很大不同?
感謝您的回答! – sbrattla 2013-04-24 08:18:12