Nested Selections

2019-03-09  本文已影响0人  雷朝建

内嵌的元素

考虑以下DOM结构:

<table>
  <thead>
    <tr><td>  A</td><td>  B</td><td>  C</td><td>  D</td></tr>
  </thead>
  <tbody>
    <tr><td>  0</td><td>  1</td><td>  2</td><td>  3</td></tr>
    <tr><td>  4</td><td>  5</td><td>  6</td><td>  7</td></tr>
    <tr><td>  8</td><td>  9</td><td> 10</td><td> 11</td></tr>
    <tr><td> 12</td><td> 13</td><td> 14</td><td> 15</td></tr>
  </tbody>
</table>
console.log(d3.selectAll('tbody td'));
console.log(d3.select('tbody').selectAll('td'));
8.PNG

数据实现内嵌结构

const data = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12],
  [13, 14, 15, 16],
];
d3.select('tbody').selectAll('tr').data(data).enter().append('tr')
  .selectAll('td').data(d => d).enter().append('td').text(d => d);
9.PNG
10.PNG

内嵌和父级元素

d3.selectAll("table tr")
    .data(matrix)
  .enter().append("tr"); // error!

这里之所以是失败的, 因为tr的父级节点是html, 而非table.


1.PNG

如果父级节点是table, 则会成功:

d3.select("table").selectAll("tr")
    .data(matrix)
  .enter().append("tr"); // success
2.PNG
上一篇下一篇

猜你喜欢

热点阅读