Ticket #1612 (closed bug: fixed)
:contains selector doesn't work for Ajax responses in IE6
| Reported by: | julienw | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 1.4 |
| Component: | selector | Version: | 1.4a1 |
| Keywords: | Cc: | ||
| Blocking: | Blocked by: |
Description
Hi,
I wanted to use the selector :contains for Ajax responses, and, while it works perfectly in Firefox, in doesn't work in IE. My guess is that Ajax responses don't have innerText set in IE (whereas in Firefox, they have textContent; I checked that).
The fix below works for me, for my specific case, but it is maybe too much intrusive, or not enough :
I'm changing this line :
| a.innerText | ).indexOf(m[3])>=0", |
to :
| a.innerText | a.firstChild.nodeValue | ).indexOf(m[3])>=0", |
I could setup a small testcase if you need it.
Change History
comment:2 Changed 4 years ago by till
- Status changed from closed to reopened
- Resolution fixed deleted
Bug is back in 1.3.2. It seems since the refactoring to filters someone throw out that fix again.
So, line jquery-1.3.2.js#1944 right now is
| elem.innerText | "").indexOf(match[3]) >= 0; |
but should be
| elem.innerText | $(elem).text() | "").indexOf(match[3]) >= 0; |
(Tested with IE7.0 Win)
comment:3 Changed 4 years ago by till
Um, next try:
return (elem.textContent || elem.innerText || $(elem).text() || "").indexOf(match[3]) >= 0;
(Well, preview showed it correctly, but pipes are wiki-tables. So, if it still got removed: between the elem-expressions there should be JavaScript-ORs)
comment:4 Changed 4 years ago by john
- Version changed from 1.2 to 1.3.2
- Component changed from core to selector
- Milestone changed from 1.2.1 to 1.4
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

Fixed in SVN rev [3300].