內容
.closest( selector )傳回:jQuery
說明:對集合中的每個元素,透過測試元素本身並在 DOM 樹中向上遍歷其祖先,取得符合選擇器的第一個元素。
-
新增版本:1.3.closest( selector )
-
selector類型:選擇器包含選擇器表達式的字串,用於比對元素。
-
-
新增版本:1.4.closest( selector [, context ] )
-
新增版本:1.6.closest( selection )
-
selection類型:jQuery一個用於比對元素的 jQuery 物件。
-
-
版本新增:1.6.closest( element )
-
element類型:元素一個用於比對元素的元素。
-
給定一個代表一組 DOM 元素的 jQuery 物件,.closest()
方法會搜尋這些元素及其在 DOM 樹中的祖先,並從比對的元素建構一個新的 jQuery 物件。.parents()
和 .closest()
方法很類似,因為它們都會向上遍歷 DOM 樹。兩者之間的差異雖然細微,但卻很重要
.closest()
|
.parents()
|
---|---|
從目前的元素開始 | 從父元素開始 |
向上遍歷 DOM 樹,直到找到與提供的選擇器相符的元素 | 向上遍歷 DOM 樹到文件根元素,將每個祖先元素加入暫時集合中;如果提供了選擇器,則會根據選擇器過濾該集合 |
回傳的 jQuery 物件包含原始集合中每個元素的零個或一個元素,依文件順序 | 回傳的 jQuery 物件包含原始集合中每個元素的零個或多個元素,依反向文件順序 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
|
假設我們從項目 A 開始搜尋 <ul>
元素
1
2
3
|
|
這會變更層級 2 <ul>
的顏色,因為它是向上遍歷 DOM 樹時遇到的第一個元素。
假設我們改為搜尋 <li>
元素
1
2
3
|
|
這會變更清單項目 A 的顏色。.closest()
方法會在向上遍歷 DOM 樹之前,從 元素本身 開始搜尋,並在項目 A 與選擇器相符時停止。
我們可以傳入一個 DOM 元素作為搜尋最近元素的內容。
1
2
3
4
5
6
7
|
|
這會變更第 2 層級 <ul>
的顏色,因為它同時是清單項目 A 的第一個 <ul>
祖先和清單項目 II 的後代。不過,它不會變更第 1 層級 <ul>
的顏色,因為它不是清單項目 II 的後代。
範例
示範如何使用 closest 進行事件委派。當清單元素或其後代被按一下時,最接近的清單元素會切換為黃色背景。
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
|
|
示範
傳遞 jQuery 物件給 closest。當清單元素或其後代被按一下時,最接近的清單元素會切換為黃色背景。
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
|
|
示範
.closest( selectors [, context ] )傳回:陣列版本已棄用:1.7,已移除:1.8
說明:取得與目前元素相符的所有元素和選擇器的陣列,並透過 DOM 樹向上。
這個簽章(僅限這個!)從 jQuery 1.7 開始已棄用,並在 jQuery 1.8 中移除。它主要用於內部或外掛程式作者。