- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Mon, 10 Jun 2013 13:47:52 -0700
- To: Timmy Willison <timmywillisn@gmail.com>
- Cc: Boris Zbarsky <bzbarsky@mit.edu>, public-webapps <public-webapps@w3.org>
On Mon, Jun 10, 2013 at 1:15 PM, Timmy Willison <timmywillisn@gmail.com> wrote: > Thank you both. That helps a lot. I figured el.querySelector(":scope + div") > would do the same thing as el.find("+ div"). > > Perhaps more examples in the spec that clearly demonstrate differences like > this between qSA() and findAll() would be helpful. I think some form of the > example that Tab gave would be a great addition. > > Also, maybe we can clarify even further in the defintions for find() and > findAll(). Perhaps, rather than, > > "... from the tree within which the context object is located." > > It could be, > > "... within the subtrees of the parent of the context object or the tree in > which the context object is located if there is no parent." > > Compare this with qS[A]: > > "... within the subtrees of the context object." > > This is an attempt to make it clear that ancestors of the context object > will never be in the resulting set and need not be considered in > implementations. In other words, it seems to me that elem.find() will never > return ancestors of elem. It certainly can return ancestors. You just need the right combinators. The reference combinator defined in Selectors 4 <http://dev.w3.org/csswg/selectors/#idref-combinators> can move anywhere in the tree, including straight upwards. The use of the subject indicator, also defined in Selectors 4 <http://dev.w3.org/csswg/selectors/#subject>, can also move up the tree. Just throw away your notion that .find() does any scoping whatsoever. It doesn't; all it does is provide a reference element, which is matched by :scope and which is used to absolutize relative selectors. ~TJ
Received on Monday, 10 June 2013 20:48:39 UTC