wrap(),顧名思義,就是包裹的意思,就是在你所在器外層包裹一層?xùn)|西,接下來(lái)我們就詳細(xì)來(lái)看使用jQuery中的wrap()函數(shù)操作HTML元素的教程:
wrap()函數(shù)用于在每個(gè)匹配元素外部包裹指定的HTML結(jié)構(gòu)。
與該函數(shù)相對(duì)的是unwrap()函數(shù),用于當(dāng)前匹配元素的父元素(只移除父元素,其內(nèi)部節(jié)點(diǎn)全部保留)。
該函數(shù)屬于jQuery對(duì)象(實(shí)例)。
語(yǔ)法
jQueryObject.wrap( wrapper )
參數(shù)
wrapper String/Element/jQuery/Function類型用于包裹匹配元素的節(jié)點(diǎn)。
如果參數(shù)wrapper為字符串,則將其視作jQuery選擇器或html字符串,jQuery會(huì)自行判斷。
jQuery 1.4 新增支持:參數(shù)wrapper可以為函數(shù)。wrap()將根據(jù)匹配的所有元素遍歷執(zhí)行該函數(shù),函數(shù)中的this將指向?qū)?yīng)的DOM元素。
wrap()還會(huì)為函數(shù)傳入一個(gè)參數(shù),即當(dāng)前元素在匹配元素中的索引。函數(shù)的返回值就是用于包裹的節(jié)點(diǎn)內(nèi)容(可以是html字符串、DOM元素或jQuery對(duì)象)。
注意:如果wrapper匹配多個(gè)元素,則只將第一個(gè)元素作為包裹元素。
注意:如果wrapper是多層嵌套的元素(例如<p><i></i></p>),wrap()將從外往內(nèi)檢查每層嵌套的第一個(gè)節(jié)點(diǎn)。如果該節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)或者第一個(gè)子節(jié)點(diǎn)不是Element節(jié)點(diǎn)(比如文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)等),就停止向內(nèi)查找,直接在當(dāng)前節(jié)點(diǎn)內(nèi)部的末尾位置追加(append())當(dāng)前匹配元素。
返回值
wrap()函數(shù)的返回值為jQuery類型,返回當(dāng)前jQuery對(duì)象本身(以便于進(jìn)行鏈?zhǔn)斤L(fēng)格的編程)。
注意:即使wrapper元素是當(dāng)前頁(yè)面中的元素,該元素也不會(huì)從原位置上消失。因?yàn)閣rap()使用的是該元素的副本(克隆)來(lái)充當(dāng)包裹。
示例
<div class="container">
<div class="inner">Hello</div>
<div class="inner">Goodbye</div>
</div>
$( ".inner" ).wrap(function() {
return "<div class='" + $( this ).text() + "'></div>";
});
結(jié)果如下:
<div class="container">
<div class="Hello">
<div class="inner">Hello</div>
</div>
<div class="Goodbye">
<div class="inner">Goodbye</div>
</div>
</div>
類似的用法還有.wrapAll()、.wrapInner()、.unwrap()等等!