X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fmanipulation.js;h=4746dc83b1e70228a7d830c32b5781901399a538;hb=173c1477ae6efc4c2eeb7131ba0646c4e1323975;hp=501383816ed3cb30b0b0f4656ff4132215ef684f;hpb=bca82254137a161094377b2d8189c2d9d5906a0f;p=jquery.git diff --git a/src/manipulation.js b/src/manipulation.js index 5013838..4746dc8 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -106,15 +106,29 @@ jQuery.fn.extend({ }, before: function() { - return this.domManip(arguments, false, function(elem){ - this.parentNode.insertBefore( elem, this ); - }); + if ( this[0] && this[0].parentNode ) { + return this.domManip(arguments, false, function(elem){ + this.parentNode.insertBefore( elem, this ); + }); + } else { + var set = jQuery.isFunction(arguments[0]) ? + jQuery( arguments[0]() ) : + jQuery.apply(jQuery, arguments); + + return this.pushStack( set.add( this ), "before", arguments ); + } }, after: function() { - return this.domManip(arguments, false, function(elem){ - this.parentNode.insertBefore( elem, this.nextSibling ); - }); + if ( this[0] && this[0].parentNode ) { + return this.domManip(arguments, false, function(elem){ + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + } else { + return jQuery.isFunction(arguments[0]) ? + this.add( arguments[0]() ) : + this.add.apply( this, arguments ); + } }, clone: function( events ) { @@ -193,7 +207,11 @@ jQuery.fn.extend({ }, replaceWith: function( value ) { - return this.after( value ).remove(); + if ( this[0] && this[0].parentNode ) { + return this.after( value ).remove(); + } else { + return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ); + } }, detach: function( selector ) {