javascript - 如何从元素中查询选择器子项(仅)?

标签 javascript css-selectors

想象一下这样的结构:

<div id="boxes">
  <div id="firstdiv">...</div>
  <div class="important">...</div>
  <div id="lastdiv">
    <div id="subdiv">...</div>
    <div class="important">...</div>
  </div>
</div>

现在如果我写:

document.querySelectorAll('#boxes > div:not([class])')

我将得到 #firstdiv#lastdiv。太好了。

但是如果我想从 #boxes 元素做同样的事情呢?

const boxes = document.querySelector('#boxes')

// this is what I tried
boxes.querySelectorAll('> div:not([class])') // it doesn't work

// and if I type
boxes.querySelectorAll('div:not([class])')
// I get #firstdiv, #lastdiv BUT ALSO #subdiv which I don't want

我该怎么做?

最佳答案

您可以使用 :scope 来引用正在调用 querySelectorAll 的元素:

const collection = boxes.querySelectorAll(':scope > div:not([class])');
console.log(collection.length, collection[0], collection[1]);
<div id="boxes">
  <div id="firstdiv">...</div>
  <div class="important">...</div>
  <div id="lastdiv">
    <div id="subdiv">...</div>
    <div class="important">...</div>
  </div>
</div>

(不幸的是,它不支持 great 浏览器)

关于javascript - 如何从元素中查询选择器子项(仅)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57745294/

相关文章:

javascript - 无焦点按键检测

javascript - Promise 映射并获取数组的当前值

javascript - 如何在 react-styleguidist 中添加具有依赖关系的组件示例

javascript - Angular 2 AOT 与 JIT 负载比较

javascript - rails : Page specific javascript running on every page if visited in same window

css - 是否可以仅使用 CSS 更改修改后的输入字段的样式?

html - 列表项的 CSS 颜色没有改变

css - 使用 nth-child 选择连续的组?

html - 在 <hX> 中定位 <small>

html - 可以在 :focus? 上设置其他元素的样式