当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JQuery .wrapInner()用法及代码示例


用法
.wrapInner( wrappingElement ) => jQuery

说明:围绕匹配元素集中每个元素的内容包装一个 HTML 结构。

  • 添加的版本:1.2.wrapInner( wrappingElement )

    • wrappingElement
      类型:htmlStringSelectorjQueryElement
      一个 HTML 片段、选择器表达式、jQuery 对象或 DOM 元素,指定了包含匹配元素内容的结构。
  • 添加的版本:1.4.wrapInner( function )

    • function
      类型:Function(Integer索引)=>String
      一个回调函数,它生成一个结构来包匹配元素的内容。接收集合中元素的索引位置作为参数。在函数中,this 指的是集合中的当前元素。

.wrapInner() 函数可以采用可以传递给 $() 工厂函数的任何字符串或对象来指定 DOM 结构。这个结构可以嵌套好几层,但应该只包含一个最里面的元素。该结构将包匹配元素集中每个元素的内容。

考虑以下 HTML:

<div class="container">
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>

使用 .wrapInner() ,我们可以在每个内部 <div> 元素的内容周围插入一个 HTML 结构,如下所示:

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

新的<div> 元素是动态创建并添加到 DOM 中的。结果是一个新的 <div> 围绕每个匹配元素的内容:

<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 片段,在其中包装相应元素的内容。例如:

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

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

<div class="container">
  <div class="inner">
    <div class="Hello">Hello</div>
  </div>
  <div class="inner">
    <div class="Goodbye">Goodbye</div>
  </div>
</div>

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

$( elem ).wrapInner( "<div class='test'></div>" );
$( elem ).wrapInner( "<div class=\"test\"></div>" );

例子:

选择所有段落并在其每个内容周围加上一个粗体标记。

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

演示:

将新创建的对象树包在主体内部。

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

演示:

选择所有段落并在其每个内容周围加上一个粗体标记。

<!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-3.5.0.js"></script>
</head>
<body>
 
<p>Hello</p>
<p>cruel</p>
<p>World</p>
 
<script>
$( "p" ).wrapInner( document.createElement( "b" ) );
</script>
 
</body>
</html>

演示:

选择所有段落并围绕其每个内容包装一个 jQuery 对象。

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

演示:

相关用法


注:本文由纯净天空筛选整理自jquery.com大神的英文原创作品 .wrapInner()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。