私はこのコードを持っています
$("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));
The throttle returns a new function that calls the old function once 500 milliseconds have elapsed since the function was last called.
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.
使ってみて...
function slideDown(){
...
}
// call
setTimeout(function(){ slideDown(); }, 1000);