From: John Resig Date: Wed, 9 Sep 2009 00:21:21 +0000 (+0000) Subject: Added support for .eq(-N), .first(), and .last(). Fixes #2164 and #4188. X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=9de120e6d7cfffa3d990a6ccf23db3cd74e2bdc0 Added support for .eq(-N), .first(), and .last(). Fixes #2164 and #4188. --- diff --git a/src/traversing.js b/src/traversing.js index f46820f..1342c59 100644 --- a/src/traversing.js +++ b/src/traversing.js @@ -78,7 +78,17 @@ jQuery.fn.extend({ }, eq: function( i ) { - return this.slice( i, +i + 1 ); + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); }, slice: function() { diff --git a/test/unit/traversing.js b/test/unit/traversing.js index 1a7e6ee..46a49bb 100644 --- a/test/unit/traversing.js +++ b/test/unit/traversing.js @@ -203,7 +203,7 @@ test("prev([String])", function() { }); test("slice()", function() { - expect(6); + expect(7); var $links = jQuery("#ap a"); @@ -213,8 +213,20 @@ test("slice()", function() { isSet( $links.slice(-1), q("mark"), "slice(-1)" ); isSet( $links.eq(1), q("groups"), "eq(1)" ); - isSet( $links.eq('2'), q("anchor1"), "eq('2')" ); + isSet( $links.eq(-1), q("mark"), "eq(-1)" ); +}); + +test("first()/last()", function() { + expect(4); + + var $links = jQuery("#ap a"), $none = jQuery("asdf"); + + isSet( $links.first(), q("google"), "first()" ); + isSet( $links.last(), q("mark"), "last()" ); + + isSet( $none.first(), [], "first() none" ); + isSet( $none.last(), [], "last() none" ); }); test("map()", function() {