.prevAll( [selector ] )返回值: jQuery
描述: 获取匹配元素集中每个元素的所有前置兄弟元素,可选地通过选择器进行过滤,以相反的文档顺序排列。
-
添加版本: 1.2.prevAll( [selector ] )
-
selector类型: 选择器包含选择器表达式的字符串,用于匹配元素。
-
给定一个表示一组 DOM 元素的 jQuery 对象,.prevAll()
方法会在 DOM 树中搜索这些元素的前驱元素,并从匹配的元素中构建一个新的 jQuery 对象;这些元素以从最近的兄弟元素开始的顺序返回。
该方法可以选择接受与我们传递给 $()
函数相同的类型的选择器表达式。如果提供了选择器,则会通过测试元素是否与它匹配来过滤元素。
考虑一个页面上有一个简单的列表
1
2
3
4
5
6
7
|
|
如果我们从第三个项目开始,我们可以找到它之前的元素
1
|
|
此调用的结果是在项目 1 和 2 后面显示红色背景。由于我们没有提供选择器表达式,因此这些前置元素毫无疑问地包含在对象中。如果我们提供了一个选择器表达式,则会在包含元素之前测试它们是否匹配。
注意: 许多 API,如 append
或 wrapAll
按它们在 jQuery 对象中出现的顺序处理节点。这可能会对像 .prevAll()
这样的 API 造成问题,因为这些 API 使用的是相反的文档顺序。考虑以下示例
1
2
3
4
5
|
|
以下调用
1
2
3
|
|
将导致以下 HTML
1
2
3
4
5
6
7
|
|
因为“项目 2”首先被附加到包装 div 中。为了解决这个问题,您可以在 .uniqueSort()
的 .prevAll()
输出上使用。
1
2
3
4
|
|
请注意,.uniqueSort()
方法仅在 jQuery 3.7.0 或更高版本中可用。在旧版本中,您需要使用 $.uniqueSort()
来实现类似的效果。
1
2
3
|
|
示例
找到最后一个 div 之前的所有 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
|
|
演示
找到最后一个项目之前的所有 div,并用一个带有 wrapper
类的 div 将它们包装起来 - 无论是否使用 .uniqueSort()
。
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
|