.filter( selector )傳回:jQuery
說明:將符合選擇器或通過函式測試的匹配元素集合縮減。
-
已新增版本:1.0.filter( selector )
-
selector類型:選擇器包含選擇器表達式的字串,用於比對目前的元素集合。
-
-
已新增版本:1.0.filter( function )
-
function用於測試集合中每個元素的函數。
this
是目前的 DOM 元素。
-
-
版本新增:1.4.filter( elements )
-
elements類型:元素一個或多個與目前元素集合相符的 DOM 元素。
-
-
版本新增:1.4.filter( selection )
-
selection類型:jQuery一個現有的 jQuery 物件,用於與目前的元素集合相符。
-
給定一個表示 DOM 元素集合的 jQuery 物件,.filter()
方法會從符合元素的子集合建構一個新的 jQuery 物件。提供的選擇器會測試每個元素;所有符合選擇器的元素都會包含在結果中。
考慮一個包含簡單清單的網頁
1
2
3
4
5
6
7
8
|
|
我們可以將此方法套用於清單項目集合
1
|
|
此呼叫的結果會讓項目 2、4 和 6 變成紅色背景,因為它們符合選擇器。
使用篩選函數
此方法的第二種形式允許我們根據函數而不是選擇器來篩選元素。對於每個元素,如果函數傳回 true
(或「真值」),則元素會包含在經過篩選的集合中;否則,它會被排除在外。假設我們有一個更複雜的 HTML 片段
1
2
3
4
5
6
7
8
9
|
|
我們可以選取清單項目,然後根據其內容進行篩選
1
2
3
4
5
|
|
此程式碼只會變更第一個清單項目,因為它只包含一個 <strong>
標籤。在篩選函數中,this
指的是每個 DOM 元素。傳遞給函數的參數會告訴我們該 DOM 元素在與 jQuery 物件相符的集合中的索引。
我們也可以利用傳遞至函式的index
,它表示未過濾的匹配元素集合中元素的 0 為基準的位置
1
2
3
4
5
|
|
對程式碼的這項變更會導致第三和第六個清單項目被突顯,因為它使用模數運算子 (%
) 來選取每個index
值,當除以 3 時,餘數為2
。
注意:當將 CSS 選擇器字串傳遞至.filter()
時,文字和註解節點將在過濾處理期間始終從產生的 jQuery 物件中移除。當提供特定節點或節點陣列時,文字或註解節點僅會在與過濾陣列中的其中一個節點相符時包含在產生的 jQuery 物件中。
範例
變更所有 div 的顏色;然後為具有「middle」類別的 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
|
|
示範
變更所有 div 的顏色;然後為第二個 div (index == 1) 和 id 為「fourth」的 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
|
|
示範
選取所有 div,並使用 DOM 元素過濾選取,僅保留 id 為「unique」的元素。
1
|
|
選取所有 div,並使用 jQuery 物件過濾選取,僅保留 id 為「unique」的元素。
1
|
|