视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jquery之wrap(),wrap(),unwrap()方法详解
2020-11-27 20:18:53 责编:小采
文档


wrap():为每个匹配元素外面添加指定的HTML结构,

wrapAll(): 为所有匹配元素(作为一个整体)外面添加一个指定的HTML结构wrap()函数用于在每个匹配元素外部包裹指定的HTML结构。

与该函数相对的是unwrap()函数,用于当前匹配元素的父元素(只移除父元素,其内部节点全部保留)。

该函数属于jQuery对象(实例)。

语法

jQueryObject.wrap( wrapper )

参数

参数描述
wrapperString/Element/jQuery/Function类型用于包裹匹配元素的节点。

如果参数wrapper为字符串,则将其视作jQuery选择器或html字符串,jQuery会自行判断。

jQuery 1.4 新增支持:参数wrapper可以为函数。wrap()将根据匹配的所有元素遍历执行该函数,函数中的this将指向对应的DOM元素。

wrap()还会为函数传入一个参数,即当前元素在匹配元素中的索引。函数的返回值就是用于包裹的节点内容(可以是html字符串、DOM元素或jQuery对象)。

注意:如果wrapper匹配多个元素,则只将第一个元素作为包裹元素。

注意:如果wrapper是多层嵌套的元素(例如),wrap()将从外往内检查每层嵌套的第一个节点。如果该节点没有子节点或者第一个子节点不是Element节点(比如文本节点、注释节点等),就停止向内查找,直接在当前节点内部的末尾位置追加(append())当前匹配元素。

返回值

wrap()函数的返回值为jQuery类型,返回当前jQuery对象本身(以便于进行链式风格的编程)。

注意:即使wrapper元素是当前页面中的元素,该元素也不会从原位置上消失。因为wrap()使用的是该元素的副本(克隆)来充当包裹。

示例&说明

wrap()函数用于在每个匹配元素之前的位置插入内容:

<p>段落文本1<span></span></p>
<p>段落文本2<span></span></p>

<script type="text/javascript">
$("p").wrap( '<p></p>' );
</script>

<!--以下是jQuery代码执行后的html内容-->
<p><p>段落文本1<span></span></p></p>
<p><p>段落文本2<span></span></p></p>

以下面这段HTML代码为例:

<p id="n1">
<span id="n2">span#n2</span>
</p>
<p id="n3">
<input id="n4" type="text" />
</p>
<span id="n5">多层嵌套1</span>
<span id="n6">多层嵌套2</span>

以下jQuery示例代码用于演示wrap()函数的具体用法:

// 在n2元素外包裹strong元素:<strong>{#n2}</strong>
$("#n2").wrap('<strong/>');


// 在n4元素外包裹form元素:<form name="myForm">{#n4}</form>
$("#n4").wrap('<form name="myForm"></form>');


// 在每个p元素外包裹p元素:<p data_id="index">{p}</p>
$("p").wrap( function(index){
return '<p data_id="' + index + '"></p>';
} );


// 在n5元素外包裹嵌套的p元素:<p><p><em><b>{#n5}</b></em></p></p>
$("#n5").wrap( '<p><p><em><b></b></em></p></p>' );


// 在n6元素外包裹嵌套的p元素:<p><p> <em><b></b></em>${#n5}</p></p>
// wrap()会从外层p依次往内部查找,以确定n5元素的所在位置
// wrap()将从外往内检查每层嵌套的第一个元素,如果该元素没有子元素或者第一个子元素不是Element节点,就停止向内查找
// 由于参数的'<p>'后面有空格(文本节点),也就是说p元素的第一个子元素不是Element类型,因此直接将n6插入到p元素内部的末尾位置
$("#n6").wrap( '<p><p> <em><b></b></em></p></p>' );

运行代码

wrap()会将包裹元素的开始标记和结束标记分别置于匹配元素的两侧,不会额外添加任何空白字符,上述代码执行后的完整html代码如下(格式未作任何调整):

<p data_id="0"><p id="n1">
<strong><span id="n2">span#n2</span></strong>
</p></p>
<p data_id="1"><p id="n3">
<form name="myForm"><input id="n4" type="text"></form>
</p></p>
<p><p><em><b><span id="n5">多层嵌套1</span></b></em></p></p>
<p><p> <em><b></b></em><span id="n6">多层嵌套2</span></p></p>

下载本文
显示全文
专题