Opened 11 years ago
Closed 10 years ago
#10977 closed bug (fixed)
Incorrect documentation for the index method?
Reported by: | 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 11 years ago by
comment:2 Changed 11 years ago by
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 11 years ago by
Component: | unfiled → traversing |
---|---|
Owner: | set to Rick Waldron |
Priority: | undecided → high |
Status: | new → assigned |
comment:4 Changed 11 years ago by
Keywords: | needsdocs added |
---|
comment:5 Changed 11 years ago by
Keywords: | needsdocs removed |
---|---|
Resolution: | → notabug |
Status: | assigned → closed |
comment:6 Changed 10 years ago by
Resolution: | notabug |
---|---|
Status: | closed → reopened |
comment:7 Changed 10 years ago by
Status: | reopened → open |
---|
comment:8 Changed 10 years ago by
Resolution: | → fixed |
---|---|
Status: | open → closed |
Return correct index for no-arg index() calls. Fixes #10977. Closes gh-971
Changeset: 4bb46f413a0e2f6933013b26d2aceddca6cf03f1
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.