Bug Tracker

Ticket #3971: index.2009.03.05.patch

File index.2009.03.05.patch, 2.0 KB (added by paul.irish, 11 years ago)

a proper patch with testcases.

  • test/unit/core.js

     
    366366        ok( pass, "Execute a function, Relative" );
    367367});
    368368
     369
    369370test("index(Object)", function() {
    370371        expect(10);
    371372
     
    386387        equals( elements.index( elements.eq(1) ), 1, "Pass in a jQuery object" );
    387388});
    388389
     390test("index(String|undefined)", function() {
     391        expect(4);
     392
     393        equals( jQuery('#text2').index(), 2, "Check for index amongst siblings" );
     394        equals( jQuery('#form').children().eq(4).index(), 4, "Check for index amongst siblings" );
     395        equals( jQuery('#radio2').index('#form :radio') , 1, "Check for index within a selector" );
     396    equals( jQuery('#radio2').index('#form :text') , -1, "Check for index not found within a selector" );
     397       
     398});
     399
     400
     401
    389402test("attr(String)", function() {
    390403        expect(27);
    391404        equals( jQuery('#text1').attr('value'), "Test", 'Check for value attribute' );
  • src/core.js

     
    158158        // Determine the position of an element within
    159159        // the matched set of elements
    160160        index: function( elem ) {
     161                       
     162          // legacy implementation
     163          if ( typeof elem === 'object'){
    161164                // Locate the position of the desired element
    162                 return jQuery.inArray(
    163                         // If it receives a jQuery object, the first element is used
    164                         elem && elem.jquery ? elem[0] : elem
    165                 , this );
     165            return jQuery.inArray(
     166                        // If it receives a jQuery object, the first element is used
     167                      elem && elem.jquery ? elem[0] : elem
     168                     , this );
     169          }
     170          //return the index of the element in a new jQuery obj from selector or by default, amongst its own siblings.
     171          return jQuery.inArray(this[0],
     172                    elem ? jQuery(elem) : jQuery.sibling(this[0].parentNode.firstChild,undefined) );
     173         
    166174        },
    167175
    168176        attr: function( name, value, type ) {