From: gnarf Date: Wed, 15 Jun 2011 04:38:36 +0000 (-0500) Subject: Quick improvement to the performace of .index() with no arguments - Adding a unit... X-Git-Tag: 1.6.3rc1~29^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9a96af1d59cc6a10b89b6f2489b04871a9c1c7fa;p=jquery.git Quick improvement to the performace of .index() with no arguments - Adding a unit test for .index() of a node without a parent returns -1 --- 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 diff --git a/test/unit/traversing.js b/test/unit/traversing.js index 5216ae752..70c142597 100644 --- a/test/unit/traversing.js +++ b/test/unit/traversing.js @@ -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("
").index(), -1, "Node without parent returns -1" ); }); test("index(Object|String|undefined)", function() {