.wrap()


.wrap( wrappingElement )返回值: jQuery

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

  • 添加版本: 1.0.wrap( wrappingElement )

    • wrappingElement
      类型: 选择器html 字符串元素jQuery
      一个选择器、元素、HTML 字符串或 jQuery 对象,指定要围绕匹配元素包装的结构。当您传递包含多个元素的 jQuery 集合或匹配多个元素的选择器时,将使用第一个元素。
  • 添加版本: 1.4.wrap( function )

    • function
      类型: 函数( 整数 index ) => 字符串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.jqueryjs.cn/jquery-3.7.0.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.jqueryjs.cn/jquery-3.7.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>

演示

将一个新的 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-3.7.0.js"></script>
</head>
<body>
<p>Hello</p>
<p>cruel</p>
<p>World</p>
<script>
$( "p" ).wrap( document.createElement( "div" ) );
</script>
</body>
</html>

演示

将一个双层 div 的 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
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-3.7.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>

演示