Added $(...).map() functionality. (Also closes #1250, imo)
authorJohn Resig <jeresig@gmail.com>
Fri, 31 Aug 2007 03:26:03 +0000 (03:26 +0000)
committerJohn Resig <jeresig@gmail.com>
Fri, 31 Aug 2007 03:26:03 +0000 (03:26 +0000)
src/jquery/coreTest.js
src/jquery/jquery.js

index e919284..40be7f8 100644 (file)
@@ -976,3 +976,23 @@ test("slice()", function() {
        isSet( $("#ap a").slice(0,3), q("google", "groups", "anchor1"), "slice(0,3)" );
        isSet( $("#ap a").slice(-1), q("mark"), "slice(-1)" );
 });
+
+test("map()", function() {
+       expect(2);
+
+       isSet(
+               $("#ap").map(function(){
+                       return $(this).find("a").get();
+               }),
+               q("google", "groups", "anchor1", "mark"),
+               "Array Map"
+       );
+
+       isSet(
+               $("#ap > a").map(function(){
+                       return this.parentNode;
+               }),
+               q("ap","ap","ap"),
+               "Single Map"
+       );
+});
index 8988c5e..8180a4e 100644 (file)
@@ -1189,6 +1189,12 @@ jQuery.fn = jQuery.prototype = {
        slice: function() {
                return this.pushStack( Array.prototype.slice.apply( this, arguments ) );
        },
+
+       map: function(fn){
+               return this.pushStack(jQuery.map( this, function(elem,i){
+                       return fn.call( elem, i, elem );
+               }));
+       },
        
        /**
         * @private