From: John Resig Date: Mon, 2 May 2011 17:25:53 +0000 (-0400) Subject: Make sure that empty nodelists continue to map properly. Fixes #8993. X-Git-Tag: 1.6~3 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=6c449fd5df3e0ec50e893d055da9aea486e7d71c;p=jquery.git Make sure that empty nodelists continue to map properly. Fixes #8993. --- diff --git a/src/core.js b/src/core.js index 6ab06e15b..7eb0e0b11 100644 --- a/src/core.js +++ b/src/core.js @@ -720,7 +720,7 @@ jQuery.extend({ i = 0, length = elems.length, // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || jQuery.isArray( elems ) ) ; + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; // Go through the array, translating each of the items to their if ( isArray ) { diff --git a/test/unit/core.js b/test/unit/core.js index 7690756d9..75d3e0e2c 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -653,7 +653,7 @@ test("first()/last()", function() { }); test("map()", function() { - expect(7); + expect(8); same( jQuery("#ap").map(function(){ @@ -694,6 +694,12 @@ test("map()", function() { }); equals( mapped.length, scripts.length, "Map an array(-like) to a hash" ); + var nonsense = document.getElementsByTagName("asdf"); + var mapped = jQuery.map( nonsense, function( v, k ){ + return v; + }); + equals( mapped.length, nonsense.length, "Map an empty array(-like) to a hash" ); + var flat = jQuery.map( Array(4), function( v, k ){ return k % 2 ? k : [k,k,k];//try mixing array and regular returns });