Mat*_*hew 4 javascript jquery javascript-events settimeout backbone.js
我有一个#search元素,当keyup事件发生时应触发一个函数.只有keyup在设定的时间内没有发生(例如500毫秒)时,才会触发此功能.这将阻止搜索结果更新每个按下的字母.问题是使用backbone.js,我在哈希中有我的事件,并且适用的事件如下:
'keyup #search' : 'setSearch'
setSearch()在keyup事件发生时调用该函数.我现在还不清楚如何处理它.我已经尝试过各种各样的东西,但没有任何东西可以保持计时器超过功能结束.
我有类似的东西:
setSearch: function(event) {
var timer = window.setTimeout( function() {
// run function here
alert('fired');
}, 500);
},
Run Code Online (Sandbox Code Playgroud)
而不是alert('fired'),我将有自己的功能运行.我可以看到为什么这段代码不起作用(为每个keyup发生的事件设置一个计时器.但我仍然不清楚我还能尝试什么.
Sky*_*son 18
您正在寻找的实际上是一个从underscore.js(Backbone的要求)提供给您的功能
setSearch: _.throttle(function() {
//Do Stuff
}, 500),
Run Code Online (Sandbox Code Playgroud)
简而言之,这将返回一个新形式的匿名函数,每500ms只能调用一次.您可能需要根据需要调整时间.
更多信息:http: //documentcloud.github.com/underscore/#throttle
| 归档时间: |
|
| 查看次数: |
6575 次 |
| 最近记录: |