内容
.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 中删除。它主要用于内部或插件作者。