aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Waldron <waldron.rick@gmail.com>2013-04-16 22:16:12 -0400
committerRick Waldron <waldron.rick@gmail.com>2013-04-16 22:18:44 -0400
commit77d7f264524677104cd7f37ecdb631d5824eacd4 (patch)
treea391a15673534ee7f60328793e47fc289becde7f
parentdb0326b1fdd22b97e24af34245e38914c04a70ba (diff)
downloadjquery-77d7f264524677104cd7f37ecdb631d5824eacd4.tar.gz
jquery-77d7f264524677104cd7f37ecdb631d5824eacd4.zip
Fixes #13779. Remove nodes in document order (uses for loop matching empty()).
-rw-r--r--src/manipulation.js5
-rw-r--r--test/unit/manipulation.js24
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(
+ "<div class='removal-fixture'>1</div>" +
+ "<div class='removal-fixture'>2</div>" +
+ "<div class='removal-fixture'>3</div>"
+ )
+ );
+
+ jQuery(".removal-fixture").remove();
+
+ equal( last, 3, "The removal fixtures were removed in document order" );
+
+ jQuery.cleanData = cleanData;
+});
+
test( "detach()", 11, function() {
testRemove("detach");
});