]> source.dussan.org Git - jquery.git/commitdiff
Core: Implement .even() & .odd() to replace POS :even & :odd
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Tue, 24 Sep 2019 00:04:53 +0000 (02:04 +0200)
committerMichał Gołębiowski-Owczarek <m.goleb@gmail.com>
Tue, 24 Sep 2019 00:05:39 +0000 (02:05 +0200)
`:even` & `:odd` are deprecated since jQuery 3.4.0 & will be removed in 4.0.0.
The new `even()` & `odd()` methods will make the migration easier.

Closes gh-4485

(cherry picked from commit 78420d427cf3734d9264405fcbe08b76be182a95)

src/core.js
test/unit/core.js

index 3ef92d48fc26e6ec19c99b2b4f07ca1263d48722..dde341cc8c2a0d5f76982506fc460aa4b4b6c40f 100644 (file)
@@ -105,6 +105,18 @@ jQuery.fn = jQuery.prototype = {
                return this.eq( -1 );
        },
 
+       even: function() {
+               return this.pushStack( jQuery.grep( this, function( _elem, i ) {
+                       return ( i + 1 ) % 2;
+               } ) );
+       },
+
+       odd: function() {
+               return this.pushStack( jQuery.grep( this, function( _elem, i ) {
+                       return i % 2;
+               } ) );
+       },
+
        eq: function( i ) {
                var len = this.length,
                        j = +i + ( i < 0 ? len : 0 );
index 2f40462f3b309a58b86f6fa7dde8336191a7966f..b8e556b85b0f9d9919d79e25d81a080d09e4b2ec 100644 (file)
@@ -670,6 +670,18 @@ QUnit.test( "first()/last()", function( assert ) {
        assert.deepEqual( $none.last().get(), [], "last() none" );
 } );
 
+QUnit.test( "even()/odd()", function( assert ) {
+       assert.expect( 4 );
+
+       var $links = jQuery( "#ap a" ), $none = jQuery( "asdf" );
+
+       assert.deepEqual( $links.even().get(), q( "google", "anchor1" ), "even()" );
+       assert.deepEqual( $links.odd().get(), q( "groups", "mark" ), "odd()" );
+
+       assert.deepEqual( $none.even().get(), [], "even() none" );
+       assert.deepEqual( $none.odd().get(), [], "odd() none" );
+} );
+
 QUnit.test( "map()", function( assert ) {
        assert.expect( 2 );