.wrap()


.wrap( wrappingElement )傳回: jQuery

說明: 在符合的元素組中的每個元素周圍包覆一個 HTML 結構。

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

    • wrappingElement
      類型: 選擇器htmlString元素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.jquery.com/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.jquery.com/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.jquery.com/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>

示範

在所有段落周圍包覆 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-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>

示範