You*_*uss 9 jquery events delay settimeout
我有用户在打字时进行ajax调用.问题是它会对每个字母进行调用,所以我设置了这样的超时:
$(input).live('keyup', function(e){
setTimeout(function(){
var xx = $(input).val();
doSearch(xx);
}, 400);
});
Run Code Online (Sandbox Code Playgroud)
它确实等待400ms,然后为每个keyup执行.如何更改此选项,以便在最后输入的字母后约400ms内"acax"调用一次?
(我过去使用'延迟',但这对我的脚本根本不起作用......)
Gav*_*iel 19
timer = 0;
function mySearch (){
var xx = $(input).val();
doSearch(xx);
}
$(input).live('keyup', function(e){
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(mySearch, 400);
});
Run Code Online (Sandbox Code Playgroud)
最好将你的函数移动到一个命名函数并多次调用它,因为否则你会在每个keyup上创建另一个lambda函数,这是不必要的并且相对昂贵