@@ -297,33 +297,37 @@ jQuery.fn = jQuery.prototype = {
297
297
// attributes in IE that are actually only stored
298
298
// as properties will not be copied (such as the
299
299
// the name attribute on an input).
300
- var clone = this . cloneNode ( true ) ,
301
- container = document . createElement ( "div" ) ;
302
- container . appendChild ( clone ) ;
303
- return jQuery . clean ( [ container . innerHTML ] ) [ 0 ] ;
300
+ var html = this . outerHTML ;
301
+ if ( ! html ) {
302
+ var div = this . ownerDocument . createElement ( "div" ) ;
303
+ div . appendChild ( this . cloneNode ( true ) ) ;
304
+ html = div . innerHTML ;
305
+ }
306
+
307
+ return jQuery . clean ( [ html . replace ( / j Q u e r y \d + = " (?: \d + | n u l l ) " / g, "" ) . replace ( / ^ \s * / , "" ) ] ) [ 0 ] ;
304
308
} else
305
309
return this . cloneNode ( true ) ;
306
310
} ) ;
307
311
308
- // Need to set the expando to null on the cloned set if it exists
309
- // removeData doesn't work here, IE removes it from the original as well
310
- // this is primarily for IE but the data expando shouldn't be copied over in any browser
311
- var clone = ret . find ( "*" ) . andSelf ( ) . each ( function ( ) {
312
- if ( this [ expando ] !== undefined )
313
- this [ expando ] = null ;
314
- } ) ;
315
-
316
312
// Copy the events from the original to the clone
317
- if ( events === true )
318
- this . find ( "*" ) . andSelf ( ) . each ( function ( i ) {
319
- if ( this . nodeType == 3 )
313
+ if ( events === true ) {
314
+ var orig = this . find ( "*" ) . andSelf ( ) , i = 0 ;
315
+
316
+ ret . find ( "*" ) . andSelf ( ) . each ( function ( ) {
317
+ if ( this . nodeName !== orig [ i ] . nodeName )
320
318
return ;
321
- var events = jQuery . data ( this , "events" ) ;
322
319
323
- for ( var type in events )
324
- for ( var handler in events [ type ] )
325
- jQuery . event . add ( clone [ i ] , type , events [ type ] [ handler ] , events [ type ] [ handler ] . data ) ;
320
+ var events = jQuery . data ( orig [ i ] , "events" ) ;
321
+
322
+ for ( var type in events ) {
323
+ for ( var handler in events [ type ] ) {
324
+ jQuery . event . add ( this , type , events [ type ] [ handler ] , events [ type ] [ handler ] . data ) ;
325
+ }
326
+ }
327
+
328
+ i ++ ;
326
329
} ) ;
330
+ }
327
331
328
332
// Return the cloned set
329
333
return ret ;
@@ -462,7 +466,7 @@ jQuery.fn = jQuery.prototype = {
462
466
html : function ( value ) {
463
467
return value === undefined ?
464
468
( this [ 0 ] ?
465
- this [ 0 ] . innerHTML :
469
+ this [ 0 ] . innerHTML . replace ( / j Q u e r y \d + = " (?: \d + | n u l l ) " / g , "" ) :
466
470
null ) :
467
471
this . empty ( ) . append ( value ) ;
468
472
} ,
0 commit comments