延迟上(“点击”)事件
问题描述:
我有这样的代码延迟上(“点击”)事件
$("input").on('keyup', function() {
$("block"),slideDown("slow")......
问题是taht当我写的快速块将再次和比我写的阿恩慢得多做了“动漫”
有没有另一个事件可以用来在代码完成后运行代码?我们可以说,我停止编写代码,然后执行代码500ms,然后执行代码。
答
像这样的事情是我用什么之前:
$(input).keyup(onKeyUp);
/**
* Handler for the keyup event
*/
function onKeyUp() {
//reset
clearTimeout(myTimer);
myTimer = setTimeout(otherFunction, 500);
}
现在otherFunction会在500毫秒之后被调用,但是每个keyup事件定时器将被重置。
答
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毫秒后调用旧函数。
答
尝试使用...
function slideDown(){
...
}
// call
setTimeout(function(){ slideDown(); }, 1000);
+0
你刚刚遭受W3Schools的考验:不要将字符串传递给'setTimeout'。而且,你的代码只是延迟了这个功能 - 它并没有考虑到“停止写入”。 – pimvdb 2012-07-18 10:20:48
你能不能用时,'input'失去焦点,并且其值发生了变化,这将触发'change'事件? – 2012-07-18 10:06:57