wrap.js源码
提供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;
}); 相关推荐
  瓜牛呱呱    2020-11-12  
   柳木木的IT    2020-11-04  
   yifouhu    2020-11-02  
   lei0    2020-11-02  
   源码zanqunet    2020-10-26  
   码代码的陈同学    2020-10-14  
   lukezhong    2020-10-14  
   clh0    2020-09-18  
   changcongying    2020-09-17  
   星辰大海的路上    2020-09-13  
   abfdada    2020-08-26  
   mzy000    2020-08-24  
   shenlanse    2020-08-18  
   zhujiangtaotaise    2020-08-18  
   xiemanR    2020-08-17