javascript – 使用querySelectorAll时,有没有办法引用上下文节点的直接子节点而不使用ID?

前端之家收集整理的这篇文章主要介绍了javascript – 使用querySelectorAll时,有没有办法引用上下文节点的直接子节点而不使用ID?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个 HTML结构
<div id="a">
  <div id="b">
    <div id="c"></div>
  </div>
</div>

要使用querySelectorAll查询“a”的子项,我可以执行类似的操作

//Get "b",but not "c"
document.querySelectorAll('#a > div')

我的问题是:是否可以在没有ID的情况下直接引用节点?我试过了

var a_div = document.getElementById('a')
a_div.querySelectorAll('> div') //<-- error here

但我收到一个错误,告诉我我使用的选择器无效.

如果有人想知道,我的真实用例会更复杂,比如’> .foo .bar .baz’所以我宁愿避免手工DOM遍历.目前我正在为root div添加一个临时id,但这似乎是一个丑陋的黑客……

解决方法

不,没有一种方法(尚未)引用某个元素的所有子元素而不使用对该元素的引用.因为>是一个 child combinator,表示父元素和子元素之间的关系,simple selector(父元素)是必要的(在您的示例中缺少).

评论BoltClock said中,Selectors API Level 2 specification定义方法findAllname可以改变“作为参数接受什么可能被称为相对选择器(可以以组合器而不是复合选择器开始的选择器)”.
实现时,可以按如下方式使用:

a_div.findAll('> div');

猜你在找的JavaScript相关文章