Copybara bot | be50d49 | 2023-11-30 00:16:42 +0100 | [diff] [blame] | 1 | define( [ |
| 2 | "./core", |
| 3 | "./var/isFunction", |
| 4 | "./core/init", |
| 5 | "./manipulation", // clone |
| 6 | "./traversing" // parent, contents |
| 7 | ], function( jQuery, isFunction ) { |
| 8 | |
| 9 | "use strict"; |
| 10 | |
| 11 | jQuery.fn.extend( { |
| 12 | wrapAll: function( html ) { |
| 13 | var wrap; |
| 14 | |
| 15 | if ( this[ 0 ] ) { |
| 16 | if ( isFunction( html ) ) { |
| 17 | html = html.call( this[ 0 ] ); |
| 18 | } |
| 19 | |
| 20 | // The elements to wrap the target around |
| 21 | wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); |
| 22 | |
| 23 | if ( this[ 0 ].parentNode ) { |
| 24 | wrap.insertBefore( this[ 0 ] ); |
| 25 | } |
| 26 | |
| 27 | wrap.map( function() { |
| 28 | var elem = this; |
| 29 | |
| 30 | while ( elem.firstElementChild ) { |
| 31 | elem = elem.firstElementChild; |
| 32 | } |
| 33 | |
| 34 | return elem; |
| 35 | } ).append( this ); |
| 36 | } |
| 37 | |
| 38 | return this; |
| 39 | }, |
| 40 | |
| 41 | wrapInner: function( html ) { |
| 42 | if ( isFunction( html ) ) { |
| 43 | return this.each( function( i ) { |
| 44 | jQuery( this ).wrapInner( html.call( this, i ) ); |
| 45 | } ); |
| 46 | } |
| 47 | |
| 48 | return this.each( function() { |
| 49 | var self = jQuery( this ), |
| 50 | contents = self.contents(); |
| 51 | |
| 52 | if ( contents.length ) { |
| 53 | contents.wrapAll( html ); |
| 54 | |
| 55 | } else { |
| 56 | self.append( html ); |
| 57 | } |
| 58 | } ); |
| 59 | }, |
| 60 | |
| 61 | wrap: function( html ) { |
| 62 | var htmlIsFunction = isFunction( html ); |
| 63 | |
| 64 | return this.each( function( i ) { |
| 65 | jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); |
| 66 | } ); |
| 67 | }, |
| 68 | |
| 69 | unwrap: function( selector ) { |
| 70 | this.parent( selector ).not( "body" ).each( function() { |
| 71 | jQuery( this ).replaceWith( this.childNodes ); |
| 72 | } ); |
| 73 | return this; |
| 74 | } |
| 75 | } ); |
| 76 | |
| 77 | return jQuery; |
| 78 | } ); |