我有这个代码
$("input").on('keyup', function () {
$("block"),slideDown("slow")......
问题是当我写得很快时,块会再次做“动画”,而且比我写的要慢得多
是否有另一个事件可以用来仅“在我完成编写后”运行代码让我们说,我停止编写,然后它需要 500 毫秒,然后代码被执行。
我有这个代码
$("input").on('keyup', function () {
$("block"),slideDown("slow")......
问题是当我写得很快时,块会再次做“动画”,而且比我写的要慢得多
是否有另一个事件可以用来仅“在我完成编写后”运行代码让我们说,我停止编写,然后它需要 500 毫秒,然后代码被执行。
function throttle(fn, time ){
var timer = 0;
return function() {
clearTimeout(timer);
timer = setTimeout($.proxy(fn, this), time);
};
}
$("input").on('keyup', throttle(function () {
$("block").slideDown("slow")
},500));
油门返回一个新函数,该函数在自上次调用函数后经过 500 毫秒后调用旧函数。
像这样的东西是我以前用过的:
$(input).keyup(onKeyUp);
/**
* Handler for the keyup event
*/
function onKeyUp() {
//reset
clearTimeout(myTimer);
myTimer = setTimeout(otherFunction, 500);
}
现在 otherFunction 将在 500 毫秒后被调用,但在每个 keyup 事件上,此计时器将被重置。
尝试使用...
function slideDown(){
...
}
// call
setTimeout(function(){ slideDown(); }, 1000);