D3.js:select(“body”)。selectAll(“p”)和selectAll(“p”)之间的区别?

时间:2011-12-12 22:22:26

标签: javascript dom d3.js

有谁知道有什么区别?

我的理解是两者都会返回相同的选择。

但是当我进行追加时,如果我使用selectAll(“p”)它就不起作用。

例如,这有效:

var foo = d3.select("body").selectAll("p")
    .data([1,2,3,4])

foo.enter.append("p")

虽然这不起作用:

var foo = d3.selectAll("p")
    .data([1,2,3,4])

foo.enter.append("p")

为什么后者不起作用?

1 个答案:

答案 0 :(得分:16)

这里简短的回答是,“因为没有什么可追加的。”如果你是正确的d3.selectAll("p")d3.select("body").selectAll("p")将选择相同的现有节点,那么选择body元素会先设置 new 使用.append()方法添加的节点。

在没有选择body的情况下,你没有在DOM树中插入你的节点 - 我猜测d3试图将新节点附加到document对象,这导致{ {1}} discussed here