如何在迭代选择时访问“this”的“previous sibling”?

时间:2015-04-09 14:36:43

标签: d3.js

在以下代码中,假设$sel是某些任意 d3.js选择:

$sel.each(function(d, i, j) {
              var prev = ??? ;
              ...
          });

我可以将???替换为prev分配给{em>以前的this 兄弟的d3.js选择(如果存在的话) ?

(如果this是第一个孩子,因此没有先前的兄弟,则应为prev分配一个空的d3.js选项。)

1 个答案:

答案 0 :(得分:15)

可能就像

一样简单
var prev = d3.select(this.previousSibling);

如果您对元素节点感兴趣,那么您只需要

var prev = d3.select(this.previousElementSibling);

d3.selectAll(".c").each(function() {
    console.log(d3.select(this));                         // Element <p class="c"></p>
    console.log(d3.select(this.previousSibling));         // text node containing whitespace between b and c
    console.log(d3.select(this.previousElementSibling));  // Element <p class="b"></p>
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<div>
    <p class="a"></p>
    <p class="b"></p>
    <p class="c"></p>
    <p class="d"></p>
    <p class="e"></p>
</div>