javascript - 如何使用 JavaScript 选择所有元素,除了一个及其所有子元素?

标签 javascript css-selectors

对于以下 HTML,我如何才能仅在父级选择所有 div,除了具有属性的 div - class="first" 及其使用 JavaScript 的子级?

换句话说,在调用查询后我想得到一个包含这些 div 的数组:class="all"class="second"类=“第三”

<div class="all">
    <div class="header">All</div>
    <div class="cell-1"></div>
    <div class="cell-2"></div>
    <div class="cell-3"></div>
    <div class="cell-4"></div>
</div>
<div class="first">
    <div class="header">First</div>
    <div class="cell-1"></div>
    <div class="cell-2"></div>
    <div class="cell-3"></div>
    <div class="cell-4"></div>
</div>
<div class="second">
    <div class="header">Second</div>
    <div class="cell-1"></div>
    <div class="cell-2"></div>
    <div class="cell-3"></div>
    <div class="cell-4"></div>
</div>
<div class="third">
    <div class="header">Third</div>
    <div class="cell-1"></div>
    <div class="cell-2"></div>
    <div class="cell-3"></div>
    <div class="cell-4"></div>
</div>

最佳答案

这些 div 是某个容器的子元素(至少是 body,如果不是更直接的话)。所以你可以使用带有 child combinator 的选择器和一个 :not您不想要的 .first 元素的子句:

var divs = document.querySelectorAll("body > div:not(.first)");

当然,如果 body 不是它们的容器,请将其替换为该元素的选择器。

例子:

var divs = document.querySelectorAll("body > div:not(.first)");
console.log("matching elements: " + divs.length);
Array.prototype.forEach.call(divs, function(div, index) {
  console.log(index + ": " + div.className);
});
<div class="all">
  <div class="header">All</div>
  <div class="cell-1"></div>
  <div class="cell-2"></div>
  <div class="cell-3"></div>
  <div class="cell-4"></div>
</div>
<div class="first">
  <div class="header">First</div>
  <div class="cell-1"></div>
  <div class="cell-2"></div>
  <div class="cell-3"></div>
  <div class="cell-4"></div>
</div>
<div class="second">
  <div class="header">Second</div>
  <div class="cell-1"></div>
  <div class="cell-2"></div>
  <div class="cell-3"></div>
  <div class="cell-4"></div>
</div>
<div class="third">
  <div class="header">Third</div>
  <div class="cell-1"></div>
  <div class="cell-2"></div>
  <div class="cell-3"></div>
  <div class="cell-4"></div>
</div>

关于javascript - 如何使用 JavaScript 选择所有元素,除了一个及其所有子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051833/

相关文章:

javascript - 使用 IE 11 加载本地 XML 文件

javascript - 将 CSV 数据解析为 JS 对象以在图表中使用。 Uncaught ReferenceError : data is not defined(jsfiddle included)

Selenium 的CSS查询

html - :last-of-type Or :nth-of-type(n) Where n Is Last Element

CSS 在类里面写类

javascript - 经典方法的目的|与对象状态的关系

javascript - javascript中的二维码生成库

css - 悬停不起作用

javascript - js异步读取文件

java - 使用 JSoup CSS 选择器