我有一个#search
元素,当发生keyup
事件时应该触发一个函数。如果keyup
未在设定的时间内发生(例如500毫秒),则该功能只应触发。这将防止搜索结果更新每个被按下的字母。问题是,与Backbone.js的,我有我的事件中的哈希和一个适用的样子:jquery/backbone.js - 延迟函数调用
'keyup #search' : 'setSearch'
当keyup
事件发生时调用setSearch()
功能。我现在还不清楚如何处理它。我已经尝试了各种各样的东西,但是没有任何东西可以维持定时器超过函数结尾。
我有一些像这样:
setSearch: function(event) {
var timer = window.setTimeout(function() {
// run function here
alert('fired');
}, 500);
},
而非alert('fired')
,我有我自己的功能运行。我可以看到为什么这个代码不起作用(每发生一个keyup
事件都会设置一个定时器,但我仍然没有清楚的想法,我还有什么可以尝试的。
user1243645的评论:“我遇到了我的项目类似的要求我只是想补充一点,响应斯凯勒·安德森的一篇关于'_。油门“,我实际上已经发现['_.debounce()'](http://documentcloud.github.com/underscore/#debounce)可以更好地满足我的需求。” –
对于这个问题,去抖动要比油门好得多。 – tonyhb