Permalink
Browse files

Fixes #12449. make replaceWith() clone elements where required. Closes

  • Loading branch information...
1 parent 13449a9 commit 551c2c9f4ac776b6d53600c452ad40a4b4d6670b @rvagg rvagg committed with rwaldron Dec 5, 2012
Showing with 128 additions and 113 deletions.
  1. +17 −19 src/manipulation.js
  2. +111 −94 test/unit/manipulation.js
View
@@ -258,32 +258,29 @@ jQuery.fn.extend({
value = jQuery( value ).detach();
}
- this.each( function( i ) {
- var next = this.nextSibling,
- parent = this.parentNode,
- // HTML argument replaced by "this" element
- // 1. There were no supporting tests
- // 2. There was no internal code relying on this
- // 3. There was no documentation of an html argument
- val = !isFunc ? value : value.call( this, i, this );
+ return this.domManip( [ value ], true, function( elem, i ) {
+ var next, parent;
if ( isDisconnected( this ) ) {
- // for disconnected elements, we replace with the new content in the set. We use
- // clone here to ensure that each replaced instance is unique
- self[ i ] = jQuery( val ).clone()[ 0 ];
+ // for disconnected elements, we simply replace
+ // with the new content in the set
+ self[ i ] = elem;
return;
}
- jQuery( this ).remove();
+ if ( this.nodeType === 1 || this.nodeType === 11 ) {
+ next = this.nextSibling;
+ parent = this.parentNode;
- if ( next ) {
- jQuery( next ).before( val );
- } else {
- jQuery( parent ).append( val );
+ jQuery( this ).remove();
+
+ if ( next ) {
+ next.parentNode.insertBefore( elem, next );
+ } else {
+ parent.appendChild( elem );
+ }
}
});
-
- return this;
},
detach: function( selector ) {
@@ -344,7 +341,8 @@ jQuery.fn.extend({
table && jQuery.nodeName( this[i], "table" ) ?
findOrAppend( this[i], "tbody" ) :
this[i],
- node
+ node,
+ i
);
}
Oops, something went wrong.

0 comments on commit 551c2c9

Please sign in to comment.