Re: QSA, the problem with ":scope", and naming

On 26/10/11 9:28 AM, Tab Atkins Jr. wrote:
> On Tue, Oct 25, 2011 at 2:33 PM, Sean Hogan<shogun70@westnet.com.au>  wrote:
>> On 26/10/11 7:51 AM, Tab Atkins Jr. wrote:
>>> On Tue, Oct 25, 2011 at 1:47 PM, Sean Hogan<shogun70@westnet.com.au>
>>>   wrote:
>>>> I think allowing explicit :scope in findAll() will be perpetually
>>>> confusing.
>>>> I can imagine someone looking at old code like:
>>>>
>>>>      e.findAll("div.foo span, div.bar :scope span")
>>>>
>>>> and asking themselves "what's the rule again? If there's :scope in the
>>>> selector then there's no :scope implied? Or was that just on each single
>>>> selector? Or is :scope always implied at the start of the whole selector
>>>> list and that's why it's explicit in the second part? Dammit, why didn't
>>>> we
>>>> just use querySelectorAll() if we wanted explicit :scope?"
>>> Using :scope explicitly at the beginning of selectors is necessary if
>>> we want a sane way to have selector lists chain off of the scoping
>>> element.  I'm okay with the string starting with a combinator when
>>> it's a single selector like "+ foo", but not when it's a selector list
>>> like "+ foo, + bar".
>> I didn't follow that. Why does findAll() need to support explicit :scope?
> Did you not understand my example?  el.find("+ foo, + bar") feels
> really weird and I don't like it.  I'm okay with a single selector
> starting with a combinator, like el.find("+ foo"), but not a selector
> list.

So "+foo" becomes ":scope +foo"
But "+foo, +bar" throws an error?
What about:
+foo, bar
:scope+foo, bar
body :scope+foo, :scope+bar

What do JS lib selectors do? Do any support :scope? Do any not support 
"+foo, +bar", ">foo, >bar"?

Sean

Received on Tuesday, 25 October 2011 22:49:04 UTC