]> source.dussan.org Git - jquery.git/commitdiff
Fix #12120. Always stack .before/.after, and fix disconnected nodes.
authorDave Methvin <dave.methvin@gmail.com>
Fri, 24 Aug 2012 03:25:57 +0000 (23:25 -0400)
committerDave Methvin <dave.methvin@gmail.com>
Fri, 24 Aug 2012 03:25:57 +0000 (23:25 -0400)
src/manipulation.js
test/unit/manipulation.js

index f87e3ca94b309cbdc4310b21a6e3ee1b72df9295..67c6c06f0a82d7c8a2dea646f5147d4510b124e3 100644 (file)
@@ -148,10 +148,7 @@ jQuery.fn.extend({
                        });
                }
 
-               if ( arguments.length ) {
-                       var set = jQuery.clean( arguments );
-                       return this.pushStack( jQuery.merge( set, this ), "before", this.selector );
-               }
+               return this.pushStack( jQuery.merge( jQuery.clean( arguments ), this ), "before", this.selector );
        },
 
        after: function() {
@@ -161,10 +158,7 @@ jQuery.fn.extend({
                        });
                }
 
-               if ( arguments.length ) {
-                       var set = jQuery.clean( arguments );
-                       return this.pushStack( jQuery.merge( this, set ), "after", this.selector );
-               }
+               return this.pushStack( jQuery.merge( this.toArray(), jQuery.clean( arguments ) ), "after", this.selector );
        },
 
        // keepData is for internal use only--do not document
@@ -721,6 +715,7 @@ jQuery.extend({
 
                // Fix #11356: Clear elements from safeFragment
                if ( div ) {
+                       div.innerHTML = "";
                        safe.removeChild( div );
                        elem = div = safe = null;
                }
index d63b3ff86b7a9b12088bb07baaf987585f97ecde..15a95864d8ff1b6d9e4b3ae26a0ebf6857eb9e5e 100644 (file)
@@ -909,12 +909,13 @@ test("before(Function)", function() {
        testBefore(manipulationFunctionReturningObj);
 });
 
-test("before and after w/ empty object (#10812)", function() {
-       expect(2);
+test("before and after w/ empty object (#10812, #12120)", function() {
+       expect(3);
 
-       var res = jQuery( "#notInTheDocument" ).before( "(" ).after( ")" );
-       equal( res.length, 2, "didn't choke on empty object" );
-       equal( res.wrapAll("<div/>").parent().text(), "()", "correctly appended text" );
+       var res = jQuery("#notInTheDocument").before("<span>(</span>").after("<span>)</span>");
+       equal( res.length, 2, "added two elements to the empty object" );
+       equal( res.text(), "()", "correctly appended text" );
+       equal( res.end().text(), "(", "stacked the previous value" );
 });
 
 test("before and after on disconnected node (#10517)", function() {