Bug Tracker

Opened 5 years ago

Closed 5 years ago

#10977 closed bug (fixed)

Incorrect documentation for the index method?

Reported by: AbeMiessler@… Owned by: Rick Waldron
Priority: high Milestone: None
Component: traversing Version: 1.7.1
Keywords: Cc:
Blocked by: Blocking:

Description

You have the following documentation for index with no parameters:

If no argument is passed to the .index() method, the return value is an integer indicating the position of the first element within the jQuery object relative to its sibling elements.

But if you run this jQuery:

alert($("li:not(.disabled,.separator)").index());

Against this HTML:

<ul>
    <li class="selected">First Item</li>
    <li class="disabled">Second Item</li>
    <li class="separator">Third Item</li>
    <li>Fourth Item</li>
</ul>

It returns 3 instead of 0. You can see that the selector will find two elements (the first and last LI), but it returns the index of the last element, when your documentation says it will return the index of the first.

Can be seen in this fiddle: http://jsfiddle.net/Zf9Vv/

Change History (8)

comment:1 Changed 5 years ago by john.papaioannou@…

I have tested this snippet in multiple jQuery versions, and discovered that it is a regression introduced in 1.6.3. Please see this question on StackOverflow (and specifically, this answer) that pinpoints the guilty code.

comment:2 Changed 5 years ago by anonymous

Culprit: https://github.com/jquery/jquery/commit/9a96af1d59cc6a10b89b6f2489b04871a9c1c7fa#src/traversing.js

Fix, add first()

return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;

comment:3 Changed 5 years ago by Rick Waldron

Component: unfiledtraversing
Owner: set to Rick Waldron
Priority: undecidedhigh
Status: newassigned

comment:4 Changed 5 years ago by addyosmani

Keywords: needsdocs added

comment:5 Changed 5 years ago by mikesherov

Keywords: needsdocs removed
Resolution: notabug
Status: assignedclosed

comment:6 Changed 5 years ago by mikesherov

Resolution: notabug
Status: closedreopened

comment:7 Changed 5 years ago by mikesherov

Status: reopenedopen

comment:8 Changed 5 years ago by MORGAN

Resolution: fixed
Status: openclosed

Return correct index for no-arg index() calls. Fixes #10977. Closes gh-971

Changeset: 4bb46f413a0e2f6933013b26d2aceddca6cf03f1

Note: See TracTickets for help on using tickets.