dom.mixin(dom[fn],(function(){ var wrapHelper = function(target,html ){ var wrap = html ; if(!wrap.nodeType){ if(document.createRange){ var range=dom.doc.createRange(); range.selectNodeContents(target); wrap = range.createContextualFragment(html).firstChild; } else{ wrap = dom.parseHTML(html,null,true).firstChild } }else{ wrap = html.cloneNode(true) } var insertor = wrap; while ( insertor.firstChild && insertor.firstChild.nodeType === 1 ) { insertor = insertor.firstChild; } return [wrap,insertor] } //用一个标签包裹所有匹配元素 //做法:在第一个匹配元素上添加一个父元素(包裹),然后把其他匹配元素都转移到此父元素中来 //wrapAll(html) wrapAll(elem) var wrapAll = function(html){ if ( dom.isFunction( html ) ) { return this.each(function(el,index) { dom(this).wrapAll( html.call(this, index)); }); } var arr = wrapHelper(this[0],html); var wrap = arr[0],insertor =arr[1]; this[0].parentNode.replaceChild(wrap,this[0]); return this.each(function(el){ insertor.insertBefore(el,null); }); } //给每个匹配元素都增加一个父元素(包裹元素), var wrap= function( html ) { return this.each(function() { dom( this ).wrapAll( html ); }); } //把每一个匹配元素的子节点都用东西包裹起来 var wrapInner = function(html){ var _wrap = function(target,html){ var arr = wrapHelper(target,html); var wrap = arr[0],insertor =arr[1]; target.insertBefore(wrap,target.firstChild); for(var i=1,n=target.childNodes.length;iinsertor.appendChild(target.childNodes[i],null) } } if(is(html,"Function")){ return this.each(function(el,index){ _wrap(el, html.call(el,index)); }); } return this.each(function(el){ _wrap(el,html) }); } return { wrapAll:wrapAll, wrap:wrap, wrapInner:wrapInner } })());
unwrap方法以后再说!
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn