目录
.closest( selector )返回: jQuery
描述: 对于集合中的每个元素,通过测试元素自身并在 DOM 树中向上遍历其祖先元素,获取第一个匹配选择器的元素。
-
版本添加: 1.3.closest( selector )
-
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
|
|
这将改变二级 <ul> 的颜色,因为它是向上遍历 DOM 树时遇到的第一个。
假设我们搜索一个 <li> 元素
|
1
2
3
|
|
这将改变列表项 A 的颜色。.closest() 方法在向上遍历 DOM 树之前,从元素本身开始搜索,并在项目 A 匹配选择器时停止。
我们可以传入一个 DOM 元素作为上下文,在该上下文中搜索最近的元素。
|
1
2
3
4
5
6
7
|
|
这将改变二级 <ul> 的颜色,因为它既是列表项 A 的第一个 <ul> 祖先,又是列表项 II 的后代。但是,它不会改变一级 <ul> 的颜色,因为它不是列表项 II 的后代。
示例
示例 1
展示如何使用 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
|
|
演示
示例 2
将 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 ] )返回: Array版本已弃用: 1.7, 已移除: 1.8
描述: 获取一个数组,其中包含所有与当前元素在 DOM 树中匹配的元素和选择器。
此签名(仅此一个!)自 jQuery 1.7 起已弃用,并于 jQuery 1.8 移除。它主要用于内部或插件作者。