.delay()


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

說明:設定計時器以延遲執行佇列中後續的項目。

  • 加入版本:1.4.delay( duration [, queueName ] )

    • duration
      類型:整數
      整數,表示延遲執行佇列中下一個項目的毫秒數。
    • queueName
      類型:字串
      包含佇列名稱的字串。預設為 fx,即標準效果佇列。

在 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.jquery.com/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>

示範