我正在使用jquery调用一些javascript函数,它们之间有延迟 我也在使用Jquery Wait
当我调用下面的函数时,所有函数都被分别调用,彼此之间没有延迟。
$(this)
.call(f1)
.wait(5000)
.call(f2)
.wait(5000)
.call(f3);
这里调用函数调用了一些函数
$.fn.call = function (f) {
if (f)
f();
return this;
};
我做错了什么?
我怎样才能实现这样的目标?
谢谢
答案 0 :(得分:6)
如果您想每5秒钟调用一次功能
setTimeout(function(){f1},5000);
setTimeout(function(){f2},10000);
setTimeout(function(){f2},15000);
如果你想在最后一次终止使用后5秒钟调用每个功能
setTimeout(function(){f1;setTimeout(function(){f2;setTimeout(function(){f3},5000);},5000);},5000);
答案 1 :(得分:2)
您不需要该食谱中的wait()
; delay()是内置的,似乎具有相同的功能。但是任何一个函数都需要在jQuery的内部效果队列中添加一些东西,然后在超时到期后将其删除,即它不是睡眠语句,所以它不会在返回之前等待。
如果您想使用delay()
或wait()
,则应call()
使用queue()将该功能排入队列。只是草绘,但有点像:
$.fn.call = function(f) {
if (f) {
$(this).queue(function() {
f();
$(this).dequeue();
}
}
return this;
}
然后我希望你的代码按照你想要的方式工作。
答案 2 :(得分:1)
这是一个按顺序调用函数数组的函数:
$.fn.callFn = function(fns, delay) {
var fn, that = this;
if(fns.length > 0){
fn = fns.shift()
fn && fn();
setTimeout(function(){
that.callFn(fns, delay);
}, delay);
}
return this;
};
你会这样称呼它:
$(this).callFn([f1, f2, f3], 2000);
答案 3 :(得分:1)
$('#box').slideUp(300).delay(800).fadeIn(400);
/* .delay = wait time = 800 (this means it will wait 800/1000 of a second/ "1000 = 1 second") */