Ticket #9022 (closed bug: worksforme)
Negative eq() in IE does not return null
| Reported by: | Motty | Owned by: | Motty |
|---|---|---|---|
| Priority: | low | Milestone: | 1.next |
| Component: | traversing | Version: | 1.5.2 |
| Keywords: | Cc: | ||
| Blocking: | Blocked by: |
Description
I found a problem in older IE browsers (pre-IE9) where using a ":eq(n)" selector, where "n" is negative, returns ":eq(0)". This occurs in all jQuery versions except 1.2.6.
Here is a demo of the problem
Change History
comment:2 Changed 2 years ago by rwaldron
- Owner set to Motty
- Status changed from new to pending
- Component changed from unfiled to traversing
A simpler reduction: http://jsfiddle.net/rwaldron/TuRNp/3/
Can someone with appropriate browsers test this?
comment:3 Changed 2 years ago by Motty
- Status changed from pending to new
In the simpler reduction demo, this also returns true:
$test.eq(null).length === 1 // true
- IGNORE THIS, IT WORKS AS INTENDED! *
comment:4 Changed 2 years ago by rwaldron
- Priority changed from undecided to low
- Status changed from new to closed
- Resolution set to worksforme
Thanks for the clarification, much appreciated.
According to the api docs, eq() accepts only integers: http://api.jquery.com/eq
comment:5 Changed 2 years ago by Motty
Hiya.. sorry, I need to clarify. I shouldn't have added in the ".eq()" examples as I forgot about how it treats negative integers. But :eq() acts completely different and does not work with negative integers!
If I use ":eq(n)" in modern browsers, negative integers return null
$test.filter(':eq(-1)') // returns null
In IE8 and older, it returns the element ':eq(0)'.
$test.filter(':eq(-1)') // returns $test.filter(':eq(0)')
Here is a test example to clarify... run it in IE
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

Oh, I also found that using ".eq(-1)" also messes up, so far, in IE, Firefox and Chrome. I haven't tested the other browsers.
Updated demo
* IGNORE THIS, THIS WORKS AS INTENDED! *