wrap()函數用于在每個匹配元素外部包裹指定的HTML結構。
與該函數相對的是unwrap()函數,用于當前匹配元素的父元素(只移除父元素,其內部節點全部保留)。
該函數屬于jQuery對象(實例)。
語法
jQueryObject.wrap( wrapper )
參數
wrapper String/Element/jQuery/Function類型用于包裹匹配元素的節點。
如果參數wrapper為字符串,則將其視作jQuery選擇器或html字符串,jQuery會自行判斷。
jQuery 1.4 新增支持:參數wrapper可以為函數。wrap()將根據匹配的所有元素遍歷執行該函數,函數中的this將指向對應的DOM元素。
wrap()還會為函數傳入一個參數,即當前元素在匹配元素中的索引。函數的返回值就是用于包裹的節點內容(可以是html字符串、DOM元素或jQuery對象)。
注意:如果wrapper匹配多個元素,則只將第一個元素作為包裹元素。
注意:如果wrapper是多層嵌套的元素(例如<p><i></i></p>),wrap()將從外往內檢查每層嵌套的第一個節點。如果該節點沒有子節點或者第一個子節點不是Element節點(比如文本節點、注釋節點等),就停止向內查找,直接在當前節點內部的末尾位置追加(append())當前匹配元素。
返回值
wrap()函數的返回值為jQuery類型,返回當前jQuery對象本身(以便于進行鏈式風格的編程)。
注意:即使wrapper元素是當前頁面中的元素,該元素也不會從原位置上消失。因為wrap()使用的是該元素的副本(克隆)來充當包裹。
示例
<div class="container"> <div class="inner">Hello</div> <div class="inner">Goodbye</div> </div>
$( ".inner" ).wrap(function() { return "<div class='" + $( this ).text() + "'></div>"; });
結果如下:
<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()等等!