.add()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

.add()

分类:遍历 > 杂项遍历

返回: jQuery

.add( selector )

描述:创建一个jQuery对象,把元素添加到匹配元素的集合里。

加入于: 1.0
.add( selector )
  • selector
    类型:Selector
    一个代表选择器表达式的字符串,用来寻找附加的元素,以添加到匹配的元素集合里。
加入于: 1.0
.add( elements )
  • elements
    类型:Element
    一个或更多的要添加到匹配的元素集合中的元素。
加入于: 1.0
.add( html )
  • html
    类型:htmlString
    一段要添加到匹配的元素集合中的HTML片段。
加入于: 1.3.2
.add( selection )
  • selection
    类型:jQuery
    一个要添加到匹配的元素集合中的已有的jQuery对象。
加入于: 1.4
.add( selector, context )
  • selector
    类型:Selector
    一个代表选择器表达式的字符串,用来寻找附加的元素,以添加到匹配的元素集合中。
  • context
    类型:Element
    document中的一个位点,选择器必须从那里开始匹配;类似于$(selector, context)中的context参数。

给定一个代表DOM元素集合的jQuery对象,.add()方法从那些元素以及传给这个方法的元素的并集中构造了一个新的jQuery对象。传给.add()的参数可以是任何$()可接受的参数,包括jQuery选择器表达式、DOM元素的引用,以及一个HTML片段。

不要以为只要把元素传递给$.add()方法,这个方法就能把元素追加到已有的集合中。当所有的元素都是同一个document的成员时,.add()方法会根据document中的次序,理顺产生的集合中的元素;也就是说,根据每个元素在文档中出现的顺序排序。如果集合由来自不同的document的元素构成,或者有一些元素不在任何document中,排序方式还没有作定义。要想给已明确定义次序的元素创建一个jQuery对象,省掉排序的花销,请使用$(array_of_DOM_elements)符号。

更新过的元素集合可用于后面的(连缀的)方法,或者分配给它一个变量以供后面使用。举个例子:

$( "p" ).add( "div" ).addClass( "widget" );
var pdiv = $( "p" ).add( "div" );

下面的代码不会保存刚添加的元素,因为.add()方法创建了一个新集合,并在pdiv中留下还没变过的原始集合。

var pdiv = $( "p" );
pdiv.add( "div" ); // WRONG, pdiv will not change

设想有一个网页,带有一个简单的<li>列表,还有一个<p>段落文本跟着它:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
</ul>
<p>a paragraph</p>

我们可以要么利用一个选择器,要么利用一个对DOM元素本身的引用,作为.add()方法的参数,来选择列表项目,再选择段落文本:

$( "li" ).add( "p" ).css( "background-color", "red" );

Or:

$( "li" ).add( document.getElementsByTagName( "p" )[ 0 ] )
  .css( "background-color", "red" );

这个调用的结果是红色的背景在所有四个元素后面。使用一个HTML片段作为.add()方法的参数(根据第三版),我们可以快速创建额外的元素,并把那些元素添加到匹配的元素集合中。比如说:我们想要改变列表项目以及刚刚创建的段落文本的背景色:

$( "li" ).add( "<p id='new'>new paragraph</p>" )
  .css( "background-color", "red" );

虽然已经创建了这个新的文本段落,而且改变了它的背景色,但是它依然没有出现在网页上。要想把它放到网页上,我们可以给连缀添加一个插入方法。

自从jQuery 1.4版,.add()方法的结果总是会按document的顺序返回(而不仅仅是一个简单的合并)。

注意:提示:要想颠倒.add()方法,你可以使用.not( elements | selector )方法,以从jQuery结果中删除元素,或者用.end()方法,的返回你添加之前的选择集。

示例

找到所有的div,给它加边框。然后把所有的段落文本添加到jQuery对象中,把它们的背景色设置成黄色。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>add demo</title>
  <style>
  div {
    width: 60px;
    height: 60px;
    margin: 10px;
    float: left;
  }
  p {
    clear: left;
    font-weight: bold;
    font-size: 16px;
    color: blue;
    margin: 0 10px;
    padding: 2px;
  }
  </style>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
 
<p>Added this... (notice no border)</p>
 
<script>
$( "div" ).css( "border", "2px solid red" )
  .add( "p" )
  .css( "background", "yellow" );
</script>
 
</body>
</html>

演示结果

向匹配的元素集合中添加更多的元素,用给定的表达式匹配它们,

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>add demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
<span>Hello Again</span>
 
<script>
$( "p" ).add( "span" ).css( "background", "yellow" );
</script>
 
</body>
</html>

演示结果

向匹配的元素集合中添加更多的快速创建的元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>add demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
 
<script>
$( "p" ).clone().add( "<span>Again</span>" ).appendTo( document.body );
</script>
 
</body>
</html>

演示结果

向匹配的元素集合中添加一个或更多的元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>add demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
<span id="a">Hello Again</span>
 
<script>
$( "p" ).add( document.getElementById( "a" ) ).css( "background", "yellow" );
</script>
 
</body>
</html>

演示结果

演示如何向已有的集合中添加(跟加)元素。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>add demo</title>
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<p>Hello</p>
<span id="a">Hello Again</span>
 
<script>
var collection = $( "p" );
// Capture the new collection
collection = collection.add( document.getElementById( "a" ) );
collection.css( "background", "yellow" );
</script>
 
</body>
</html>

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/add.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。