.prevAll( [selector ] )返回值: jQuery
描述: 获取集合中每个匹配元素的所有前一个同级元素,可选地通过选择器进行筛选,按文档的相反顺序排列。
-
版本添加: 1.2.prevAll( [selector ] )
-
selector (选择器)类型:Selector一个包含选择器表达式的字符串,用于匹配元素。
-
给定一个代表 DOM 元素集合的 jQuery 对象,.prevAll() 方法会搜索 DOM 树中这些元素的父级元素,并用匹配的元素构建一个新的 jQuery 对象;元素将按照从最近的同级元素开始的顺序返回。
该方法可选地接受一个与我们传递给 $() 函数的类型相同的选择器表达式。如果提供了选择器,则在包含元素之前会先测试它们是否匹配该选择器。
考虑一个带有简单列表的页面:
|
1
2
3
4
5
6
7
|
|
如果我们从第三个元素开始,我们可以找到它前面的元素
|
1
|
|
此调用的结果是在第 1 项和第 2 项后面显示红色背景。由于我们没有提供选择器表达式,因此这些前面的元素毫无疑问地包含在对象中。如果我们提供了一个选择器,元素将在被包含之前进行匹配测试。
注意: 许多 API,如 append 或 wrapAll,会按照它们在 jQuery 对象中出现的顺序处理节点。这可能会对像 .prevAll() 这样使用文档相反顺序的 API 造成问题。请考虑以下示例
|
1
2
3
4
5
|
|
以下调用
|
1
2
3
|
|
将导致以下 HTML
|
1
2
3
4
5
6
7
|
|
因为 "Item 2" 首先被附加到 wrapper div。为了解决这个问题,您可以使用 .uniqueSort() 对 .prevAll() 的输出进行预处理
|
1
2
3
4
|
|
请注意,.uniqueSort() 方法仅在 jQuery 3.7.0 或更高版本中可用。在旧版本中,您需要使用 $.uniqueSort() 来实现类似的效果
|
1
2
3
|
|
示例
示例 1
找到最后一个 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
|
|
演示
示例 2
找到最后一个元素前面的所有 div,并用一个带有 class 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
|
|