Final pass at fixing #5785. Need to make sure that inner-nodes are detached before the remove() occurs (and it should still occur, the nodes are being obliterated.

This commit is contained in:
jeresig 2010-01-11 16:25:01 -05:00
parent cb4880ee83
commit 3e9ef6f5c0
2 changed files with 20 additions and 4 deletions

View file

@ -213,10 +213,16 @@ jQuery.fn.extend({
replaceWith: function( value ) {
if ( this[0] && this[0].parentNode ) {
// Make sure that the elements are removed from the DOM before they are inserted
// this can help fix replacing a parent with child elements
if ( !jQuery.isFunction( value ) ) {
value = jQuery( value ).detach();
}
return this.each(function() {
var next = this.nextSibling, parent = this.parentNode;
jQuery(this).detach();
jQuery(this).remove();
if ( next ) {
jQuery(next).before( value );