Bug Tracker

Ticket #9022 (closed bug: worksforme)

Opened 4 years ago

Last modified 4 years ago

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:1 Changed 4 years ago by Motty

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! *

Last edited 4 years ago by Motty (previous) (diff)

comment:2 Changed 4 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?

Version 0, edited 4 years ago by rwaldron (next)

comment:3 Changed 4 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! *
Last edited 4 years ago by Motty (previous) (diff)

comment:4 Changed 4 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 4 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

Last edited 4 years ago by Motty (previous) (diff)
Note: See TracTickets for help on using tickets.