Re: [SelectorsAPI] Thoughts on querySelectorAll

> I think that there is a simple solution. Instead of starting from the 
> descendants of the current element unless the first clause is :scope 
> or $self (or what ever it would be), make the first clause refer to  
> the current element.
> 
> document.getElementById("example").querySelectorAll(".foo span") // 
> selects spans when the current element has a class of foo
> document.getElementById("example").querySelectorAll("div span") // 
> selects spans when the current element is a div element
> 
> But what if you don't care what the current element is?
> 
> document.getElementById("example").querySelectorAll("* span") // 
> selects spans
> document.getElementById("example").querySelectorAll("> span") // 
> Implies  *>span ???
> 
> I think that this, while giving a different meaning when used from the
> document element provides the least confusion. It also imposes a very 
> minor usability impact (one character, although on a large number of 
> uses). Also, providing an explicit descendant combinator in addition 
> to space might simplify the usability.
> 
> This may also have advantages as a filter for the current element,  
> particularly when you're creating unobtrusive javascript.
> 
> document.getElementById("example").querySelectorAll(".foo")
> 
> Obviously that's only useful if you've selected the element first,  
> done stuff then apply the querySelector.

I disagree with this. These pieces of functionality should be broken up into two separate methods - a querySelectorAll that contextually finds elements (and uses :scope to find child elements and the like) and something like filterSelectorAll which filters an element - or set of elements - based upon a selector.

> This would also be much more valuable if it could be applied to a  
> nodelist (which would be similar to what jQuery does today).

I absolutely agree - having DOMNodeList.querySelectorAll would be... amazing. With the addition of a filter method, as well, this API could be wonderfully useful.

However, that's a completely different debate that will need to be explored later.

--John

Received on Friday, 2 May 2008 22:09:07 UTC