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));

The throttle returns a new function that calls the old function once 500 milliseconds have elapsed since the function was last called.

于 2012-07-18T10:09:02.877 に答える
0

Something like this is what I've used before:

$(input).keyup(onKeyUp);

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

    myTimer = setTimeout(otherFunction, 500);
}

Now otherFunction will be called after 500 milliseconds, but on each keyup event this timer will be reset.

于 2012-07-18T10:10:26.853 に答える
0

使ってみて...

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