我可以使用jQuery执行此操作,还是应该使用其他内容?
答案 0 :(得分:17)
jQuery.delay()
函数旨在延迟jQuery队列中函数的执行。
已经有一个用于处理间隔功能的内置Javascript函数,你不会使用jQuery来实现它。
setInterval(function() {
alert("Message to alert every 5 seconds");
}, 5000);
答案 1 :(得分:4)
同样,这里不需要jQuery:
setInterval(function() {
alert("How Now Brown Cow");
}, 5000);
(不要告诉任何人,但@Justin Niessner是对的,jQuery 是 JavaScript)
答案 2 :(得分:2)
您可以使用setInterval()
或setTimeout()
。也可能有一个jQuery特定的辅助函数。
setInterval()
需要2个参数 - 一个执行函数,以及调用之间的毫秒延迟。在您更改或分页或致电clearInterval(intervalID)
之前,它会一直调用该函数。您必须传递setInterval()
返回的值才能清除它。
setTimeout()
采用相同的参数,但只执行一次。您可以通过将传递给setTimeout()
的函数中的最后一行再次调用setTimeout()
来解决这个问题。
我注意到在某些浏览器中,您对使用setInterval()
所做的操作受到限制 - 例如,它可能不允许您在页面加载时调用setInterval()
。
答案 3 :(得分:1)
我将这个脚本Cookbook/wait与一个小插件一起使用,效果非常好:
(function($){
$.fn.runItIf = function(ex, fn, args) {
var self = this;
return $(self).queue(function() {
args = args || [];
if (ex)
fn.apply.(self, args );
$(self).dequeue();
});
};
$.fn.runIt = function(fn, args) {
return $(this).runItIf(true, fn, args);
};
$.fn.wait = function(time, type) {
time = time || 1000;
type = type || "fx";
return this.queue(type, function() {
var self = this;
setTimeout(function() {
$(self).dequeue();
}, time);
});
};
})(jQuery);
基于Cookbook/wait中的示例的示例:
function runIt() {
var expression = true;
$("div").wait()
.animate({left:'+=200'},2000)
.runIt(function() { /* ... */ } ).wait(10)
.runItIf(expression, function() { /* ... */ } ).wait(10)
.animate({left:'-=200'},1500,runIt);
}
runIt();