提供wrap、wrapAll、wrapInnner、unWrap方法,外部包裹、内部包裹、或移除父级包裹元素
define([
"./core",
"./core/init",
"./manipulation", // clone
"./traversing" // parent, contents
],function(jQuery){
jQuery.fn.extend({
// 只能针对单个元素,wrap方法可以是多个元素
// html可以是选择器,将拷贝页面上的元素用来包裹当前元素,被拷贝对象在页面既有两份
// 或html字符串,形成dom元素插在当前元素前头,在把当前元素用循环语句插入该dom最底层
wrapAll:function(html){
var wrap;
if ( this[0] ){
if ( jQuery.isFunction(html) ){
html=html.call(this[0]);
}
wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);
if ( this[0].parentNode ){
wrap.insertBefore(this[0]);
}
wrap.map(function(){
var elem=this;
while ( elem.firstElementChild ){
elem=elem.firstElementChild;
}
return elem;
}).append(this);
}
return this;
},
// 当前元素的子元素使用html包裹
wrapInner:function(html){
if ( jQuery.isFunction(html) ){
return this.each(function(i){
jQuery(this).wrapInner(html.call(this,i));
} );
}
return this.each(function(){
var self=jQuery(this),
contents=self.contents();// 子元素
if ( contents.length ){
contents.wrapAll(html);
}else{
self.append(html);
}
});
},
wrap:function(html){
var isFunction=jQuery.isFunction(html);
return this.each(function(i){
jQuery(this).wrapAll(isFunction ? html.call(this,i) : html);
});
},
// 移除匹配selector的父节点
unwrap:function(selector){
this.parent(selector).not("body").each(function(){
jQuery(this).replaceWith(this.childNodes);
});
return this;
}
});
return jQuery;
});
2450

被折叠的 条评论
为什么被折叠?



