Skip to content
Permalink
Browse files

Merge pull request #367 from gnarf37/index-optimize

Quick improvement to the performance of .index() with no arguments
  • Loading branch information...
dmethvin committed Aug 4, 2011
2 parents 8d5c874 + 9a96af1 commit 3cfb134ab41d204a71977c0b4c73640f250c7112
Showing with 14 additions and 7 deletions.
  1. +10 −5 src/traversing.js
  2. +4 −2 test/unit/traversing.js
@@ -145,12 +145,17 @@ jQuery.fn.extend({
// Determine the position of an element within
// the matched set of elements
index: function( elem ) {
if ( !elem || typeof elem === "string" ) {
return jQuery.inArray( this[0],
// If it receives a string, the selector is used
// If it receives nothing, the siblings are used
elem ? jQuery( elem ) : this.parent().children() );

// No argument, return index in parent
if ( !elem ) {
return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
}

// index in selector
if ( typeof elem === "string" ) {
return jQuery.inArray( this[0], jQuery( elem ) );
}

// Locate the position of the desired element
return jQuery.inArray(
// If it receives a jQuery object, the first element is used
@@ -99,9 +99,11 @@ test("is(jQuery)", function() {
});

test("index()", function() {
expect(1);
expect( 2 );

equals( jQuery("#text2").index(), 2, "Returns the index of a child amongst its siblings" )
equal( jQuery("#text2").index(), 2, "Returns the index of a child amongst its siblings" );

equal( jQuery("<div/>").index(), -1, "Node without parent returns -1" );
});

test("index(Object|String|undefined)", function() {

0 comments on commit 3cfb134

Please sign in to comment.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.