这更多是关于我的代码中发生了什么的问题。它有效,但我需要一点启发......
我正在使用 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
在输入元素上吗?据我所知,我可能会做一些愚蠢的事情。这是“最佳实践”,还是会有很大不同?