Re: [selectors4] Upwards Ancestor Traversal API

On 06/01/2014 18:13, Garrett Smith wrote:
> For event bubbling, it is very useful to traverse up the DOM tree to
> find an ancestor. For example:
>
>   findAncestorWithClass(el, className,  /*opt*/ container);
>   findAncestorWithAttribute(el, attName, /*opt*/ value);
>   jqueryObj.closest(selectorText, /*opt*/ context)
>
> It would be useful to have an API that traverses up the DOM tree and
> tests each Element against a selector and returns either an Element or
> null.
>
> Proposal:
>
>   querySelectorAncestor(startNode, selectorText[, optional Node container);
>
> If container is not specified, container is the root node.
>
> Let currentParent be startNode.parentNode. While currentParent is not
> container, if currentParent matches selectorText, it is returned.
>

I don’t think we need new APIs for this. Using the subject indicator 
with the :scope pseudo-class should be enough:

   ancestor = scope_element.querySelector('!.some_class :scope');

(By the way, where is :scope being specified nowadays?)

-- 
Simon Sapin

Received on Monday, 6 January 2014 19:26:13 UTC