.andSelf()

.andSelf()返回类型:jQueryversion deprecated: 1.8, removed: 3.0

描述:把栈中前面元素的集合加到当前集合。

注意:此函数已经被淘汰,现在它是针对.addBack()的别名,.addBack()必须用在jQuery 1.8及以后版本中。

就如针对.end()所讨论的,jQuery对象维持了一个内部堆栈,保留了元素的匹配集合的更改的跟踪。当调用DOM遍历方法之一时,新的元素集合会推入到堆栈中。如果元素的先前集合也是想要的,.andSelf()能帮助到你。

请琢磨一个带有简单列表的网页:

1
2
3
4
5
6
7
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li class="third-item">list item 3</li>
<li>list item 4</li>
<li>list item 5</li>
</ul>

下面的代码的结果是项目3、4、5后面有红色背景:

1
2
$( "li.third-item" ).nextAll().andSelf()
.css( "background-color", "red" );

首先,初始化选择器定位项目3,利用只包含此项的集合初始化堆栈。然后对.nextAll()的调用把项目4和项目5推加到堆栈中。最后,.andSelf()调用把这两个集合合并到一起,创建了一个jQuery对象,按文档顺序指向所有的三个项[ <li.third-item>, <li>, <li> ]

示例:

.andSelf()方法导致遍历堆栈中DOM元素的先前集合被加到当前集合。在第一个示例中,顶部堆栈包含了来自.find("p")的结果集。在第二个示例中,.andSelf()把堆栈上的元素的先前集合——在此情形中,是$( "div.after-andself" ) ——添加到当前集合,选择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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>andSelf demo</title>
<style>
p, div {
margin: 5px;
padding: 5px;
}
.border {
border: 2px solid red;
}
.background {
background: yellow;
}
.left, .right {
width: 45%;
float: left;
}
.right {
margin-left: 3%;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div class="left">
<p><strong>Before <code>andSelf()</code></strong></p>
<div class="before-andself">
<p>First Paragraph</p>
<p>Second Paragraph</p>
</div>
</div>
<div class="right">
<p><strong>After <code>andSelf()</code></strong></p>
<div class="after-andself">
<p>First Paragraph</p>
<p>Second Paragraph</p>
</div>
</div>
<script>
$( "div.left, div.right" ).find( "div, div > p" ).addClass( "border" );
// First Example
$( "div.before-andself" ).find( "p" ).addClass( "background" );
// Second Example
$( "div.after-andself" ).find( "p" ).andSelf().addClass( "background" );
</script>
</body>
</html>

演示: