From 6a0ee2d9ed34b81d4ad0662423bf815a3110990f Mon Sep 17 00:00:00 2001 From: Mark Raddatz Date: Fri, 8 Feb 2013 05:43:25 +0800 Subject: [PATCH] Fix #13401: replaceWith(""). Close gh-1163. --- src/manipulation.js | 20 +++++++++++--------- test/unit/manipulation.js | 9 +++++++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/manipulation.js b/src/manipulation.js index d50ebddf7..a5a1a3975 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -241,15 +241,17 @@ jQuery.fn.extend({ value = jQuery( value ).not( this ).detach(); } - return this.domManip( [ value ], true, function( elem ) { - var next = this.nextSibling, - parent = this.parentNode; - - if ( parent ) { - jQuery( this ).remove(); - parent.insertBefore( elem, next ); - } - }); + return value !== "" ? + this.domManip( [ value ], true, function( elem ) { + var next = this.nextSibling, + parent = this.parentNode; + + if ( parent ) { + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + }) : + this.remove(); }, detach: function( selector ) { diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 5c994a027..01d53a0a1 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -1219,6 +1219,15 @@ test( "replaceWith(string) for more than one element", function() { equal(jQuery("#foo p").length, 0, "verify that all the three original element have been replaced"); }); +test( "replaceWith(\"\") (#13401)", 4, function() { + expect( 1 ); + + var div = jQuery("

"); + + div.children().replaceWith(""); + equal( div.html().toLowerCase(), "", "Replacing with empty string removes element" ); +}); + test( "replaceAll(String|Element|Array|jQuery)", function() { expect( 10 ); -- 2.39.5