Ticket #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: | ||
| Blocking: | Blocked by: |
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
Change History
Changed 3 years ago by cmdrkeem
-
attachment
jquery_error.html
added
comment:1 Changed 3 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.
comment:2 Changed 3 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 3 years ago by rwaldron
- Owner set to cmdrkeem
- Priority set to undecided
- Status changed from new to pending
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 3 years ago by jitter
- Priority changed from undecided to low
- Status changed from pending to open
- Version changed from 1.4.2 to 1.4.4
- Milestone changed from 1.4.3 to 1.5
test case works fine in Opera, Chrome and FF (both alerts say 1). In IE6 (IE7/8 ?) both alerts say 0.
comment:5 Changed 2 years ago by danheberden
- Status changed from open to closed
- Resolution set to fixed
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/
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

Html file demonstrating the error