Skip to content
Permalink
Browse files

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

  • Loading branch information
rvagg authored and rwaldron committed Dec 5, 2012
1 parent 13449a9 commit 551c2c9f4ac776b6d53600c452ad40a4b4d6670b
Showing with 128 additions and 113 deletions.
  1. +17 −19 src/manipulation.js
  2. +111 −94 test/unit/manipulation.js
@@ -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
);
}

0 comments on commit 551c2c9

Please sign in to comment.
You can’t perform that action at this time.