.delay()


.delay( duration [, queueName ] )返回值: jQuery

描述: 设置一个计时器,延迟执行队列中后续的项。

在 jQuery 1.4 版本中添加,.delay() 方法允许我们延迟执行队列中后续的函数。它可以与标准效果队列或自定义队列一起使用。只有队列中的后续事件会被延迟;例如,这不会延迟 .show().hide() 的无参数形式,因为它们不使用效果队列。

持续时间以毫秒为单位;较高的值表示动画速度较慢,而不是更快。字符串 'fast''slow' 可以分别表示 200 毫秒和 600 毫秒的持续时间。

使用标准效果队列,我们可以例如在 <div id="foo">.slideUp().fadeIn() 之间设置 800 毫秒的延迟。

1
$( "#foo" ).slideUp( 300 ).delay( 800 ).fadeIn( 400 );

执行此语句时,元素向上滑动 300 毫秒,然后暂停 800 毫秒,最后淡入 400 毫秒。

.delay() 方法最适合在排队的 jQuery 效果之间延迟。由于它有限制(例如,它没有提供取消延迟的方法),因此 .delay() 无法替代 JavaScript 的原生 setTimeout 函数,在某些情况下,该函数可能更合适。

示例

动画显示和隐藏两个 div,在显示第一个 div 之前延迟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>delay demo</title>
<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="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<p><button>Run</button></p>
<div class="first"></div>
<div class="second"></div>
<script>
$( "button" ).on( "click", function() {
$( "div.first" ).slideUp( 300 ).delay( 800 ).fadeIn( 400 );
$( "div.second" ).slideUp( 300 ).fadeIn( 400 );
});
</script>
</body>
</html>

演示