.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>

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

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.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrapInner( "<b></b>" );
</script>
</body>
</html>

演示:

把一个新创建的对象树包裹在body内部的周围。

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.jquery.com/jquery-1.10.2.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.jquery.com/jquery-1.10.2.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.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrapInner( $( "<span class='red'></span>" ) );
</script>
</body>
</html>

演示: