From 9a96af1d59cc6a10b89b6f2489b04871a9c1c7fa Mon Sep 17 00:00:00 2001 From: gnarf Date: Tue, 14 Jun 2011 23:38:36 -0500 Subject: Quick improvement to the performace of .index() with no arguments - Adding a unit test for .index() of a node without a parent returns -1 --- src/traversing.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/traversing.js b/src/traversing.js index 8c4b4ef83..35a5174e9 100644 --- a/src/traversing.js +++ b/src/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 -- cgit v1.2.3