延迟开启(“点击”)事件

时间:2012-07-18 10:04:34

标签: javascript

我有这段代码

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

问题是,当我快速写入时,该块将再次执行“动画”并且比我写的慢得多

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

3 个答案:

答案 0 :(得分: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毫秒后调用旧函数。

答案 1 :(得分:0)

这样的事情是我以前用过的:

$(input).keyup(onKeyUp);

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

    myTimer = setTimeout(otherFunction, 500);
}

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

答案 2 :(得分:0)

尝试使用......

function slideDown(){
   ...
}    
// call
setTimeout(function(){ slideDown(); }, 1000);