aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2009-09-09 00:21:21 +0000
committerJohn Resig <jeresig@gmail.com>2009-09-09 00:21:21 +0000
commit9de120e6d7cfffa3d990a6ccf23db3cd74e2bdc0 (patch)
tree0b8131825b85c22167b141e8ae20079d90ba034c
parent4ea4fad0902839c06c281b5de7b0aca29922b63d (diff)
downloadjquery-9de120e6d7cfffa3d990a6ccf23db3cd74e2bdc0.tar.gz
jquery-9de120e6d7cfffa3d990a6ccf23db3cd74e2bdc0.zip
Added support for .eq(-N), .first(), and .last(). Fixes #2164 and #4188.
-rw-r--r--src/traversing.js12
-rw-r--r--test/unit/traversing.js16
2 files changed, 25 insertions, 3 deletions
diff --git a/src/traversing.js b/src/traversing.js
index f46820f84..1342c5959 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 1a7e6ee80..46a49bb97 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() {