Reputation: 25
Is it possible to only select a subset / subgroup in d3?
right now I have
d3.selectAll(".row")
now below the rows I have cells and I want to select all cells from row 3 as shown in this image subset example. There is no get(3) or [3] option.
Thank you for your help.
d3.selectAll(".row").selectAll(".cell")
gives me all cells
Upvotes: 1
Views: 210
Reputation: 108522
Lots of ways to do this. My favorite would be using a css :nth-child
selector:
d3.select(".row:nth-child(3n)").selectAll(".cell");
Here's some others:
<!DOCTYPE html>
<html>
<head>
<script data-require="[email protected]" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div class="row">
<div class="cell">a</div>
<div class="cell">b</div>
<div class="cell">c</div>
</div>
<div class="row">
<div class="cell">d</div>
<div class="cell">e</div>
<div class="cell">f</div>
</div>
<div class="row">
<div class="cell">g</div>
<div class="cell">h</div>
<div class="cell">i</div>
</div>
<div class="row">
<div class="cell">j</div>
<div class="cell">k</div>
<div class="cell">l</div>
</div>
</body>
<script>
var w1 = d3.select(document.querySelectorAll(".row")[2]).selectAll(".cell"),
w2 = d3.selectAll(".row").filter((d,i) => i === 2).selectAll(".cell"),
w3 = d3.select(d3.selectAll(".row").nodes()[2]).selectAll(".cell"),
w4 = d3.select(".row:nth-child(3n)").selectAll(".cell");
</script>
</html>
Upvotes: 2