.wrapInner()| jqueryAPI 2.2 中文手册- AspRain.cn 致力于Web开发技术翻译整理

jQuery API 2.2.0

.wrapInner()

分类:操纵 > DOM周围插入

返回: jQuery

.wrapInner( wrappingElement )

描述:在匹配的元素集合的每个元素内部包裹一个HTML结构。

加入于: 1.2
.wrapInner( wrappingElement )
  • wrappingElement
    类型:htmlString or Selector or jQuery or Element
    一个HTML片段、选择器表达式、jQuery对象,或者DOM元素,用来指定要在匹配的元素的内容周围包裹的结构。
加入于: 1.4
.wrapInner( function )
  • function
    类型:FunctionInteger index ) => String
    一个回调函数,它生成了一个要包裹在匹配的元素的内容周围的HTML结构。检索集合中元素的索引位置作为参数。在这个函数内部,this引用了集合中的当前元素。

.wrapInner()函数可以取用任何可以传递给$()函数的字符串或对象,以指定一个DOM结构。这个结构可以嵌套多层深度,但是必须只有一个最内层的元素。这个结构将包裹在匹配的元素集合中每个元素的内容周围。

设想下面的HTML:

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

使用.wrapInner(),我们可以在每个class="inner"的元素的内容周围插入一个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-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>内部的对象周围包裹一个新创建的树。

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

演示结果

选择所有段落文本文件,并给它的内容周围包裹一个粗体标记。

<!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对象。

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

演示结果

如果网页上不能运行示例,请点击http://www.asprain.cn/jQueryAPI/wrapinner.htm查看示例。

如果你觉得本文档对你有用,欢迎给翻译作者支付宝打赏,支持翻译作者源源不断翻译更多有用的技术文档。