John Resig wrote:
But that would mean that .querySelectorAll(":root div") would never match anything since :root (or :scope) could only match the element itself, which of course isn't a descendant.

I was under the impression that within the context of a DOM element :root would 
be equivalent to the root element itself - not the document element.

Right

Thus these two would be equivalent (returning the same sets of elements):

  document.getElementById("test").getElementsByTagName("div")
  document.getElementById("test").querySelectorAll(":root div")

If that's not the case then disregard all of the previous ":root is a good 
solution" talk, because that's what I was basing this on.

There are two contrary statements in your proposal.

":root" matches the root element (i.e. the "test" element in your example)

All simple selectors has to match a descendant of the element on which .querySelectorAll was called.

Clearly the "test" node isn't a descendant of itself, so the ":root" part couldn't match anything.

/ Jonas

Reply via email to