Selector: Make selector lists work with qSA
again
#491
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Sizzle 2.3.7 started using
CSS.supports( "selector(SELECTOR)" )
before usingquerySelectorAll
on the selector. This was to solve jquery/jquery#5098 - some selectors, like:has()
, now had their parameters parsed in a forgiving way, meaning that:has(:fakepseudo)
no longer throws but just returns 0 results, breaking that Sizzle mechanism.A recent spec change made
CSS.supports( "selector(SELECTOR)" )
always use non-forgiving parsing, allowing us to use this API for what we've usedtry-catch
before.To solve the issue on the spec side for older jQuery versions,
:has()
parameters are no longer using forgiving parsing in the latest spec update but our new mechanism is more future-proof anyway.However, the Sizzle implementation has a bug - in
CSS.supports( "selector(SELECTOR)" )
,SELECTOR
needs to be a<complex-selector>
and not a<complex-selector-list>
. Which means that selector lists now skipqSA
and go to the Sizzle custom traversal:To solve this, this commit wraps the selector list passed to
CSS.supports( "selector(:is(SELECTOR))" )
with:is
, making it a single selector again.See:
Fixes jquery/jquery#5177
Ref w3c/csswg-drafts#7280
+2 bytes