.wrap()

.wrap( wrappingElement )返回类型:jQuery

描述:把HTML结构包围在匹配的元素集合中每个元素的周围。

  • 增补版本:1.0.wrap( wrappingElement )

    • wrappingElement
      类型:Selector or htmlString or Element or jQuery
      一个选择器、元素、HTML字符串,或jQuery对象,指定了要包裹在匹配的元素周围的结构。如果你传递了一个jQuery集合,包含了不止一个元素,或传递了一个选择器,匹配不止一个元素,则只使用第一个元素。
  • 增补版本:1.4.wrap( function )

    • function
      类型:Function( Integer index ) => String or jQuery
      一个回调函数,返回HTML内容或jQuery对象,包裹在匹配的元素周围。接受集合中的元素的索引位置作为参数。在此函数内部,this指的是集合中的当前元素。

.wrap()函数可以取用可传递给$()工厂函数的任何字符串或对象,以指定一个DOM结构。此结构可以被嵌套若干级深,但是只能包含一个最内部的元素。此结构的副本将包裹在匹配的元素集合中每个元素的周围。出于连缀目的,此方法将返回元素的原始集合。

请考虑以下HTML:

1
2
3
4
<div class="container">
<div class="inner">Hello</div>
<div class="inner">Goodbye</div>
</div>

使用.wrap(),我们可以在内部的<div>元素周围插入一个HTML结构,如下:

1
$( ".inner" ).wrap( "<div class='new'></div>" );

快速创建了新的<div>元素,并添加到DOM。此结果是一个新的<div>,包裹在每个匹配的元素周围:

1
2
3
4
5
6
7
8
<div class="container">
<div class="new">
<div class="inner">Hello</div>
</div>
<div class="new">
<div class="inner">Goodbye</div>
</div>
</div>

此方法的第二个版本允许我们改而指定一个回调函数。此回调函数将对每个匹配的元素调用一次;它返回一个DOM元素、jQuery对象,或HTML片段,用来包裹对应的元素。例如:

1
2
3
$( ".inner" ).wrap(function() {
return "<div class='" + $( this ).text() + "'></div>";
});

这将导致每个<div>具有一个类,对应于它包裹的文本:

1
2
3
4
5
6
7
8
<div class="container">
<div class="Hello">
<div class="inner">Hello</div>
</div>
<div class="Goodbye">
<div class="inner">Goodbye</div>
</div>
</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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrap demo</title>
<style>
div {
border: 2px solid blue;
}
p {
background: yellow;
margin: 4px;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrap( "<div></div>" );
</script>
</body>
</html>

演示:

在<span>周围包裹一个新创建的对象树。请注意,在此示例中,<span>之间的任何东西,譬如<strong>(红色文本)都被留下了。甚至<span>之间的空白也被留下了。请点击“查看源代码”以查看原来的HTML。

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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrap demo</title>
<style>
div {
border: 2px blue solid;
margin: 2px;
padding: 2px;
}
p {
background: yellow;
margin: 2px;
padding: 2px;
}
strong {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<span>Span Text</span>
<strong>What about me?</strong>
<span>Another One</span>
<script>
$( "span" ).wrap( "<div><div><p><em><b></b></em></p></div></div>" );
</script>
</body>
</html>

演示:

在所有段落周围包裹一个新<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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrap demo</title>
<style>
div {
border: 2px solid blue;
}
p {
background: yellow;
margin: 4px;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrap( document.createElement( "div" ) );
</script>
</body>
</html>

演示:

在所有段落周围包裹一个jQuery对象,双倍深度的<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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrap demo</title>
<style>
div {
border: 2px solid blue;
margin: 2px;
padding: 2px;
}
.doublediv {
border-color: red;
}
p {
background: yellow;
margin: 4px;
font-size: 14px;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<div class="doublediv"><div></div></div>
<script>
$( "p" ).wrap( $( ".doublediv" ) );
</script>
</body>
</html>

演示: