Bug Tracker

Opened 15 years ago

Closed 13 years ago

Last modified 11 years ago

#2847 closed bug (fixed)

jQuery :first-child selector does not work in IE if comment precedes element

Reported by: westonruter Owned by: john
Priority: major Milestone: 1.4
Component: selector Version: 1.3.2
Keywords: Cc:
Blocked by: Blocking:

Description

In MEIE 6/7/8b1, the :first-child selector does not work if a comment is the first child; it does not work using either pure CSS nor using the jQuery selector engine. Both, however, work in Firefox and Safari.

Test case: http://weston.ruter.net/projects/test-cases/jquery-first-child-bug/

Attachments (2)

2847.html (6.4 KB) - added by nathanhammond 15 years ago.
In depth test case.
2847.diff (795 bytes) - added by nathanhammond 15 years ago.
Patch

Download all attachments as: .zip

Change History (8)

comment:1 Changed 15 years ago by pr

The problem occurs because the first node returned for IE is the comment node. Here is my attempt at fixing it. (checked in IE6/7 and FF2/3).

"first-child": function(a){
  var isFirst = false;
  $.each(a.parentNode.getElementsByTagName("*"), function() {
    // check if the first non-comment node is same as the node.
    return (this.tagName === '!') || ((isFirst = (this == a)) && false);    
  });
  return isFirst;
}

Changed 15 years ago by nathanhammond

Attachment: 2847.html added

In depth test case.

comment:2 Changed 15 years ago by nathanhammon

I've done a much more in-depth test case and determined that this is the only one of the similar selectors that exhibits this bug. It appears that .getElementsByTagName("*") returns comment nodes in IE. I'm working on a patch.

Changed 15 years ago by nathanhammond

Attachment: 2847.diff added

Patch

comment:3 Changed 15 years ago by nathanhammon

To fix this we're going to have to go slower and longer. A more clever patch might be better than the one I've just posted for review.

comment:4 Changed 13 years ago by john

Component: coreselector
Owner: set to john

comment:5 Changed 13 years ago by john

Milestone: 1.2.41.4
Version: 1.2.31.3.2

comment:6 Changed 13 years ago by dmethvin

Resolution: fixed
Status: newclosed

This appears to have been fixed in 1.3.

Note: See TracTickets for help on using tickets.