.addBack()


.addBack( [selector ] )傳回:jQuery

說明:將堆疊中的前一組元素新增至目前組,可選擇使用選擇器過濾。

.end() 討論中所述,jQuery 物件會維護一個內部堆疊,用於追蹤已比對的元素組變更。當呼叫其中一種 DOM 遍歷方法時,新的元素組會推入堆疊。若也需要前一組元素,.addBack() 可以協助您。

考慮一個包含簡單清單的頁面

1
2
3
4
5
6
7
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li class="third-item">list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>

以下程式碼的結果會在項目 3、4 和 5 後面加上紅色背景

1
2
$( "li.third-item" ).nextAll().addBack()
.css( "background-color", "red" );

首先,初始選擇器會找出項目 3,並將堆疊初始化為只包含這個項目的集合。呼叫 .nextAll() 之後,會將項目 4 和 5 的集合推入堆疊中。最後,.addBack() 呼叫會將這兩個集合合併在一起,建立一個 jQuery 物件,指向文件順序中的所有三個項目:{[<li.third-item>,<li>,<li> ]}

範例

.addBack() 方法會將巡覽堆疊中前一組的 DOM 元素加入目前的集合中。在第一個範例中,最上層的堆疊包含 .find("p") 所產生的集合。在第二個範例中,.addBack() 會將堆疊中前一組的元素(此例為 $("div.after-addback"))加入目前的集合中,選取 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>addBack demo</title>
<style>
p, div {
margin: 5px;
padding: 5px;
}
.border {
border: 2px solid red;
}
.background {
background: yellow;
}
.left, .right {
width: 45%;
float: left;
}
.right {
margin-left: 3%;
}
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
</head>
<body>
<div class="left">
<p><strong>Before <code>addBack()</code></strong></p>
<div class="before-addback">
<p>First Paragraph</p>
<p>Second Paragraph</p>
</div>
</div>
<div class="right">
<p><strong>After <code>addBack()</code></strong></p>
<div class="after-addback">
<p>First Paragraph</p>
<p>Second Paragraph</p>
</div>
</div>
<script>
$( "div.left, div.right" ).find( "div, div > p" ).addClass( "border" );
// First Example
$( "div.before-addback" ).find( "p" ).addClass( "background" );
// Second Example
$( "div.after-addback" ).find( "p" ).addBack().addClass( "background" );
</script>
</body>
</html>

示範