返回值:jQuerydelay(duration, [queueName])
设置一个延时来推迟执行队列中的项目。
-
1.4 新增delay(duration, [queueName])
duration (Integer) An integer indicating the number of milliseconds to delay execution of the next item in the queue.以毫秒为单位的整数,用于设定队列中的下一项目推迟执行的时间。queueName (String) 可选参数,包含队列名称的字符串,默认值是动画效果队列fx
。
jQuery 1.4新增, .delay()
用于将队列中的函数延时执行。它既可以推迟动画队列中函数的执行,也可以用于自定义队列。只有在队列中的连续事件可以被延时,因此不带参数的 .show()
和 .hide()
就不会有延时,因为他们没有使用动画队列。
duration 以毫秒为单位,数字越大,动画越慢。字符串 'fast'
和 'slow'
分别代表200和600毫秒的延时。
例如,我们可以使用标准的动画队列,在 <div id="foo">
的 .slideUp()
和 .fadeIn()
动画之间添加800毫秒的延时 :
$('#foo').slideUp(300).delay(800).fadeIn(400);
当这条语句执行后,元素会有300毫秒的卷起动画,接着暂停800毫秒,最后有400毫秒的淡入动画。
.delay()
用在jQuery动画队列中是再好不过的了。但是,由于其本身的限制,比如无法取消延时—.delay()
,所以不能完全用来替代 JavaScript 原生的 setTimeout 函数,后者更适用于通常情况。
示例:
隐藏再显示两个div。其中绿色的div在显示之前,有800毫秒的延时。
<!DOCTYPE html>
<html>
<head>
<style>
div { position: absolute; width: 60px; height: 60px; float: left; }
.first { background-color: #3f3; left: 0;}
.second { background-color: #33f; left: 80px;}
</style>
<script src="jquery.min.js"></script>
</head>
<body>
<p><button>Run</button></p>
<div class="first"></div>
<div class="second"></div>
<script>
$("button").click(function() {
$("div.first").slideUp(300).delay(800).fadeIn(400);
$("div.second").slideUp(300).fadeIn(400);
});
</script>
</body>
</html>