Side navigation
#4344 closed bug (wontfix)
Opened March 13, 2009 04:40AM UTC
Closed July 11, 2011 06:43PM UTC
~, > selector with descendant fails
Reported by: | kbae | Owned by: | john |
---|---|---|---|
Priority: | high | Milestone: | 1.next |
Component: | selector | Version: | 1.4.4 |
Keywords: | regression | Cc: | |
Blocked by: | Blocking: |
Description
Using ~ or > selector in combination with a descendant fails in 1.3.2, but works in 1.2.x.
Example: $(' ~ tr.clsName .subClsName', obj)
See attached sample.
Attachments (1)
Change History (7)
Changed November 04, 2009 03:26PM UTC by comment:1
Changed October 27, 2010 01:16AM UTC by comment:2
milestone: | 1.4 → 1.4.4 |
---|---|
priority: | minor → high |
status: | new → open |
version: | 1.3.2 → 1.4.3 |
Confirmed;
"Not Found" when using 1.4.4rc1:
http://jsfiddle.net/rwaldron/SKhr8/3/
"Found" with 1.2.6
http://jsfiddle.net/rwaldron/SKhr8/4/
"Note Found" with 1.3.2
http://jsfiddle.net/rwaldron/SKhr8/5/
Incidentally, I would suspect that qSA does not like mixed descendant selectors
Changed October 27, 2010 09:57PM UTC by comment:3
keywords: | → regression |
---|---|
milestone: | 1.4.4 → 1.4.5 |
Changed January 18, 2011 10:10PM UTC by comment:4
milestone: | 1.4.5 → 1.next |
---|---|
version: | 1.4.3 → 1.4.4 |
Changed June 01, 2011 06:58PM UTC by comment:6
is this bug fixed yet?
Changed July 11, 2011 06:43PM UTC by comment:7
_comment0: | This does not seem like something that we're going to fix - the result would be prohibitively expensive (both in terms of computation and in terms of file size). Perhaps if we end up rewriting Sizzle at some point we can tackle this issue then. → 1310409839886172 |
---|---|
resolution: | → wontfix |
status: | open → closed |
This does not seem like something that we're going to fix - the result would be prohibitively expensive (both in terms of computation and in terms of file size). Perhaps if we end up rewriting Sizzle at some point we can tackle this issue then.
For this specific case you can do: $("body > div").find("span") to achieve a working result.
Seems to work in the most recent versions of the browser that have the querySelectorAll() functionality. But in versions without that I think it is a Sizzle problem. So this problem shows in FF3.5 only if you hide the querySelectorAll().
Near as I can tell (at least in this case) Sizzle works backwards on the query. So with this query:
$("body > div span");
it finds the span first. Then it looks for the nearest div parent which in this case is inside_div. Next it looks to see if body is the direct parent of inside_div which it is not and fails to make a successful connection on that basis.
I suspect to fix this Sizzle would have to keep an array of matching parents found instead of just the closest parent. Then loop over those for the various cases because sometimes you want the closest but others you might not.
All in all doesn't seem like an easy fix.