.filter( selector )Returns: jQuery
Description: Reduce the set of matched elements to those that match the selector or pass the function's test.
-
version added: 1.0.filter( selector )
-
selectorType: SelectorA string containing a selector expression to match the current set of elements against.
-
-
version added: 1.0.filter( function )
-
functionA function used as a test for each element in the set.
this
is the current DOM element.
-
-
version added: 1.4.filter( elements )
-
elementsType: ElementOne or more DOM elements to match the current set of elements against.
-
-
version added: 1.4.filter( selection )
-
selectionType: jQueryAn existing jQuery object to match the current set of elements against.
-
Given a jQuery object that represents a set of DOM elements, the .filter()
method constructs a new jQuery object from a subset of the matching elements. The supplied selector is tested against each element; all elements matching the selector will be included in the result.
Consider a page with a simple list on it:
1
2
3
4
5
6
7
8
|
|
We can apply this method to the set of list items:
1
|
|
The result of this call is a red background for items 1, 3, and 5, as they match the selector (recall that :even
and :odd
use 0-based indexing).
Using a Filter Function
The second form of this method allows us to filter elements against a function rather than a selector. For each element, if the function returns true
(or a "truthy" value), the element will be included in the filtered set; otherwise, it will be excluded. Suppose we have a somewhat more involved HTML snippet:
1
2
3
4
5
6
7
8
9
|
|
We can select the list items, then filter them based on their contents:
1
2
3
4
5
|
|
This code will alter the first list item only, as it contains exactly one <strong>
tag. Within the filter function, this
refers to each DOM element in turn. The parameter passed to the function tells us the index of that DOM element within the set matched by the jQuery object.
We can also take advantage of the index
passed through the function, which indicates the 0-based position of the element within the unfiltered set of matched elements:
1
2
3
4
5
|
|
This alteration to the code will cause the third and sixth list items to be highlighted, as it uses the modulus operator (%
) to select every item with an index
value that, when divided by 3, has a remainder of 2
.
Note: When a CSS selector string is passed to .filter()
, text and comment nodes will always be removed from the resulting jQuery object during the filtering process. When a specific node or array of nodes are provided, a text or comment node will be included in the resulting jQuery object only if it matches one of the nodes in the filtering array.
Examples:
Change the color of all divs; then add a border to those with a "middle" class.
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
|
|
Demo:
Change the color of all divs; then add a border to the second one (index == 1) and the div with an id of "fourth."
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
|
|
Demo:
Select all divs and filter the selection with a DOM element, keeping only the one with an id of "unique".
1
|
|
Select all divs and filter the selection with a jQuery object, keeping only the one with an id of "unique".
1
|
|