5 "./manipulation", // clone
6 "./traversing" // parent, contents
7 ], function( jQuery, isFunction ) {
12 wrapAll: function( html ) {
16 if ( isFunction( html ) ) {
17 html = html.call( this[ 0 ] );
20 // The elements to wrap the target around
21 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
23 if ( this[ 0 ].parentNode ) {
24 wrap.insertBefore( this[ 0 ] );
27 wrap.map( function() {
30 while ( elem.firstElementChild ) {
31 elem = elem.firstElementChild;
41 wrapInner: function( html ) {
42 if ( isFunction( html ) ) {
43 return this.each( function( i ) {
44 jQuery( this ).wrapInner( html.call( this, i ) );
48 return this.each( function() {
49 var self = jQuery( this ),
50 contents = self.contents();
52 if ( contents.length ) {
53 contents.wrapAll( html );
61 wrap: function( html ) {
62 var htmlIsFunction = isFunction( html );
64 return this.each( function( i ) {
65 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
69 unwrap: function( selector ) {
70 this.parent( selector ).not( "body" ).each( function() {
71 jQuery( this ).replaceWith( this.childNodes );