0

我有这个代码

$("input").on('keyup', function () {
 $("block"),slideDown("slow")......

问题是当我写得很快时,块会再次做“动画”,而且比我写的要慢得多

是否有另一个事件可以用来仅“在我完成编写后”运行代码让我们说,我停止编写,然后它需要 500 毫秒,然后代码被执行。

4

3 回答 3

1
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 毫秒后调用旧函数。

于 2012-07-18T10:09:02.877 回答
0

像这样的东西是我以前用过的:

$(input).keyup(onKeyUp);

/**
 * Handler for the keyup event
 */
function onKeyUp() {
    //reset
    clearTimeout(myTimer);

    myTimer = setTimeout(otherFunction, 500);
}

现在 otherFunction 将在 500 毫秒后被调用,但在每个 keyup 事件上,此计时器将被重置。

于 2012-07-18T10:10:26.853 回答
0

尝试使用...

function slideDown(){
   ...
}    
// call
setTimeout(function(){ slideDown(); }, 1000);
于 2012-07-18T10:18:33.607 回答