Re: Publishing Selectors API Level 2 as an FPWD?

On 11/01/10 5:24 PM, Sean Hogan wrote:
> On 11/01/10 4:19 PM, Boris Zbarsky wrote:
>> On 1/10/10 11:58 PM, Sean Hogan wrote:
>>> Even if jQuery deprecates non-standard selectors, the current spec for
>>> queryScopedSelector*() doesn't support the jQuery implicitly "scoped"
>>> selector "> *".
>>
>> As I understand it, jquery selectors on elements are always scoped in 
>> the sense that they behave differently from the v1 Selectors API.  In 
>> particular, if I understand correctly, the behavior of:
>>
>>   element.querySelector("body div")
>>
>> in matching all <div>s that are descendants of |element| and also 
>> descendants of a <body> (which may be an _ancestor_ of |element|) is 
>> different from the selector behavior in jquery.
>>
>> Or did I understand incorrectly?
>
> That's correct. jQuery's $(element).find("div") is the equivalent of 
> SelectorsAPI2's element.querySelectorAll(":scope div") or 
> element.queryScopedSelectorAll("div").
>

Oops. Not a very insightful example. Perhaps the following would be 
better. Same for examples below.

jQuery's $(element).find("div p") is the equivalent of SelectorsAPI2's 
element.querySelectorAll(":scope div p") or 
element.queryScopedSelectorAll("div p").

> My point is that jQuery's $(element).find("> div") isn't supported 
> (without pre-processing by the JS lib) by 
> element.queryScopedSelectorAll().
>
>>
>> All that said, I just read the draft at 
>> http://dev.w3.org/2006/webapi/selectors-api2/ and I can't make heads 
>> or tails of either what the new arguments to querySelector(All) are 
>> supposed to mean (are they just an enumaration of the things :scope 
>> is allowed to match during the selector evaluation?) or what 
>> queryScopedSelector(All) is supposed to do.  Am I just missing 
>> something?  Am I reading the wrong draft?
>>
>> (I'd link to the "dated" version of the draft, in case it changes, 
>> but that link is broken, sadly.)
>>
>
> You are correct about the new refNodes argument in querySelector*().
> queryScopedSelector*() are more-or-less wrappers around querySelector*().
>
> e.g.
>
> element.queryScopedSelectorAll("div") generally becomes
> element.parentNode.querySelectorAll(":scope div", element) which is 
> the same as
> element.querySelectorAll(":scope div", element) or even
> element.querySelectorAll(":scope div")
>
>
> element.queryScopedSelectorAll(":scope > div") generally becomes
> element.parentNode.querySelectorAll(":scope > div", element) which is 
> the same as
> element.querySelectorAll(":scope > div", element) or even
> element.querySelectorAll(":scope > div")
>
>
> element.queryScopedSelectorAll(":scope + div") generally becomes
> element.parentNode.querySelectorAll(":scope + div", element)
>
>
> element.queryScopedSelectorAll("div, div:scope") generally becomes
> element.parentNode.querySelectorAll(":scope div, div:scope", element)
>
>
>

Received on Monday, 11 January 2010 07:13:38 UTC