这更多的是关于我的代码中发生了什么的问题。它的工作原理,但我需要一点点启发...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