D3 selectAll 多个类 AND or OR

D3 selectAll multiple classes AND or OR

我正在尝试 select 两个 class 这样的,

d3.selectAll(".class1.class2")

但这似乎 select 一个同时具有 class1class2 的元素。我如何 select class 与 class1class2 的元素,但 classes 不必互斥,所以一个元素同时具有 classes 也应该 selected.

也许解决方案只是,

 d3.selectAll(".class1")
 .........;
 d3.selectAll(".class2")
 .........;

这似乎有效,

d3.selectAll(".bar||.xAxisText")

根据 Selectors Level 4 Draft 的 D3 documentation the selection methods accept W3C selector strings. If you follow this link and dig into this API you end up at section 4.1 Selector Lists,其中指定:

A comma-separated list of selectors represents the union of all elements selected by each of the individual selectors in the selector list.

对于您的示例,这意味着正确的选择器字符串应该是 ".class1,.class2"。查看以下代码片段,它使用此选择器字符串为具有 类 class1class2.

之一或两者的所有段落着色

d3.selectAll(".class1,.class2")
  .style("color", "red");
<script src="https://d3js.org/d3.v4.js"></script>

<p class="class1">class1</p>
<p class="class2">class2</p>
<p class="class3">class3</p>
<p class="class1 class2">class1 class2</p>