Removed some dead code from buildFragment. Thanks to Sean Catchpole for the suggestion.
[jquery.git] / src / manipulation.js
index 9ed22ba..59edcbc 100644 (file)
@@ -77,7 +77,14 @@ jQuery.fn.extend({
 
        wrapInner: function( html ) {
                return this.each(function() {
-                       jQuery( this ).contents().wrapAll( html );
+                       var self = jQuery( this ), contents = self.contents();
+
+                       if ( contents.length ) {
+                               contents.wrapAll( html );
+
+                       } else {
+                               self.append( html );
+                       }
                });
        },
 
@@ -213,6 +220,12 @@ 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;
 
@@ -309,7 +322,7 @@ function cloneCopyEvent(orig, ret) {
 }
 
 function buildFragment( args, nodes, scripts ) {
-       var fragment, cacheable, cached, cacheresults, doc;
+       var fragment, cacheable, cacheresults, doc;
 
        if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && args[0].indexOf("<option") < 0 ) {
                cacheable = true;
@@ -318,7 +331,6 @@ function buildFragment( args, nodes, scripts ) {
                        if ( cacheresults !== 1 ) {
                                fragment = cacheresults;
                        }
-                       cached = true;
                }
        }