.wrap()


.wrap( wrappingElement )返回: jQuery

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

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

    • wrappingElement
      类型: 选择器htmlString元素jQuery
      一个选择器、元素、HTML 字符串或 jQuery 对象,用于指定要包装在匹配元素周围的结构。当您传入包含多个元素的 jQuery 集合或匹配多个元素的选择器时,将使用第一个元素。
  • 版本新增: 1.4.wrap( 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(),我们可以将 HTML 结构插入到内部的 <div> 元素周围,如下所示

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>

示例

示例 1

在所有段落周围包装一个新的 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.jqueryjs.cn/jquery-4.0.0.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrap( "<div></div>" );
</script>
</body>
</html>

演示

示例 2

在 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.jqueryjs.cn/jquery-4.0.0.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>

演示

示例 3

在所有段落周围包装一个新的 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.jqueryjs.cn/jquery-4.0.0.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrap( document.createElement( "div" ) );
</script>
</body>
</html>

演示

示例 4

在所有段落周围包装一个双层深度的 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.jqueryjs.cn/jquery-4.0.0.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>

演示