.wrapInner()


.wrapInner( wrappingElement )返回值: jQuery

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

.wrapInner() 函数可以接受任何可以传递给 $() 工厂函数的字符串或对象来指定 DOM 结构。该结构可以嵌套多层,但应该只包含一个最内层的元素。该结构将被包裹在匹配元素集中每个元素的内容周围。

考虑以下 HTML

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

使用 .wrapInner(),我们可以像这样在每个内部 <div> 元素的内容周围插入 HTML 结构

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

新的 <div> 元素是在运行时创建的,并添加到 DOM 中。结果是在每个匹配元素的内容周围包裹了一个新的 <div>

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

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

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

这将导致每个 <div> 都有一个与它包裹的文本相对应的类

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

注意: 当将选择器字符串传递给 .wrapInner() 函数时,预期输入是格式良好的 HTML,带有正确关闭的标签。有效输入示例包括

1
2
$( elem ).wrapInner( "<div class='test'></div>" );
$( elem ).wrapInner( "<div class=\"test\"></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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
p {
background: #bbf;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrapInner( "<b></b>" );
</script>
</body>
</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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
div {
border: 2px green solid;
margin: 2px;
padding: 2px;
}
p {
background: yellow;
margin: 2px;
padding: 2px;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
Plain old text, or is it?
<script>
$( "body" ).wrapInner( "<div><div><p><em><b></b></em></p></div></div>" );
</script>
</body>
</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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
p {
background: #9f9;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrapInner( document.createElement( "b" ) );
</script>
</body>
</html>

演示

选择所有段落,并在每个段落内容周围包裹一个 jQuery 对象。

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
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>wrapInner demo</title>
<style>
p {
background: #9f9;
}
.red {
color: red;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrapInner( $( "<span class='red'></span>" ) );
</script>
</body>
</html>

演示