Bug Tracker

Opened 13 years ago

Closed 12 years ago

Last modified 11 years ago

#6472 closed bug (fixed)

$.find with attribute contains selector misses results

Reported by: cmdrkeem Owned by: cmdrkeem
Priority: low Milestone:
Component: selector Version: 1.4.4
Keywords: Cc:
Blocked by: Blocking:

Description

See the attached html file for an example.

In the case of a table <table id="table1">

<tr><td>1</td></tr> <tr style="display: table-row;"><td>2</td></tr> <tr><td>3</td></tr>

</table>

I would expect the following 2 alert boxes to contain the same count, 1.

alert($("#table1 tr[style*='table-row']").length); alert($("#table1").find("tr[style*='table-row']").length);

Attachments (2)

jquery_error.html (638 bytes) - added by cmdrkeem 13 years ago.
Html file demonstrating the error
test.html (884 bytes) - added by boecko 13 years ago.
same issue with empty attributes

Download all attachments as: .zip

Change History (7)

Changed 13 years ago by cmdrkeem

Attachment: jquery_error.html added

Html file demonstrating the error

comment:1 Changed 13 years ago by dmethvin

This is because of the attribute-vs-property issue, compounded by an IE bug:

http://www.gtalbot.org/BrowserBugsSection/MSIE7Bugs/GetAttributeImplementation.html

It should be possible to match against the domelement.style.cssText property but I agree it's a problem.

Changed 13 years ago by boecko

Attachment: test.html added

same issue with empty attributes

comment:2 Changed 13 years ago by boecko

Here is another test case :

$('#test *[myattr]').length ) == 2 OK $('#test').find('*[myattr]').length == 1 WRONG $('#test').find('*[myattr=""]').length == 1 OK

If you add another

<div myattr="">third</div> then $('#test').find('*[myattr=""]').length == 2 STILL OK

comment:3 Changed 12 years ago by Rick Waldron

Owner: set to cmdrkeem
Priority: undecided
Status: newpending

Please provide a reduced jsFiddle test case, thanks!

Additionally, test against the jQuery 0 GIT version to ensure the issue still exists.

comment:4 Changed 12 years ago by jitter

Milestone: 1.4.31.5
Priority: undecidedlow
Status: pendingopen
Version: 1.4.21.4.4

test case works fine in Opera, Chrome and FF (both alerts say 1). In IE6 (IE7/8 ?) both alerts say 0.

comment:5 Changed 12 years ago by danheberden

Resolution: fixed
Status: openclosed

Using style is an awful example, given cross browser support. Here's the selector and .find using a regular attr: http://jsfiddle.net/danheberden/E7QH9/1/

Note: See TracTickets for help on using tickets.