From 2a6de9ab66653e5e424d9cc79d195b555158d04f Mon Sep 17 00:00:00 2001 From: jeresig Date: Sat, 5 Dec 2009 15:30:36 -0500 Subject: Make sure that the previous element is removed from the page before the next is inserted, in replaceWith. Using a variation of the patch by snaury. Fixes #2697. --- src/manipulation.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/manipulation.js b/src/manipulation.js index baf99d52d..7128d11cf 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -210,7 +210,17 @@ jQuery.fn.extend({ replaceWith: function( value ) { if ( this[0] && this[0].parentNode ) { - return this.after( value ).remove(); + return this.each(function(){ + var next = this.nextSibling, parent = this.parentNode; + + jQuery(this).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); } else { return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ); } -- cgit v1.2.3