Bug Tracker

Modify

Ticket #9022 (closed bug: worksforme)

Opened 3 years ago

Last modified 3 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 3 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

Version 0, edited 3 years ago by Motty (next)

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

Also, just in case it wasn't clear, if you have one element, 0 is the same as -1

Last edited 3 years ago by rwaldron (previous) (diff)

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

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

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.