From 77d7f264524677104cd7f37ecdb631d5824eacd4 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Tue, 16 Apr 2013 22:16:12 -0400 Subject: [PATCH] Fixes #13779. Remove nodes in document order (uses for loop matching empty()). --- src/manipulation.js | 5 +++-- test/unit/manipulation.js | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/manipulation.js b/src/manipulation.js index 3747e0924..ac1bf2bbf 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -75,9 +75,10 @@ jQuery.fn.extend({ remove: function( selector, keepData ) { var elem, elems = selector ? jQuery.filter( selector, this ) : this, - i = elems.length; + i = 0, + l = elems.length; - while ( i-- ) { + for ( ; i < l; i++ ) { elem = elems[ i ]; if ( !keepData && elem.nodeType === 1 ) { diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 73ad67715..30710da58 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -1572,6 +1572,30 @@ test( "remove() event cleaning ", 1, function() { cleanUp.remove(); }); +test( "remove() in document order #13779", 1, function() { + var last, + cleanData = jQuery.cleanData; + + jQuery.cleanData = function( nodes ) { + last = nodes[0].textContent; + cleanData.call( this, nodes ); + }; + + jQuery("#qunit-fixture").append( + jQuery.parseHTML( + "
1
" + + "
2
" + + "
3
" + ) + ); + + jQuery(".removal-fixture").remove(); + + equal( last, 3, "The removal fixtures were removed in document order" ); + + jQuery.cleanData = cleanData; +}); + test( "detach()", 11, function() { testRemove("detach"); }); -- 2.39.5