当前位置: 代码迷 >> 综合 >> wrap.js源码
  详细解决方案

wrap.js源码

热度:62   发布时间:2024-01-09 22:49:57.0

提供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;
});

 

  相关解决方案