有谁知道有什么区别?
我的理解是两者都会返回相同的选择。
但是当我进行追加时,如果我使用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")
为什么后者不起作用?
答案 0 :(得分:16)
这里简短的回答是,“因为没有什么可追加的。”如果你是正确的d3.selectAll("p")
和d3.select("body").selectAll("p")
将选择相同的现有节点,那么选择body
元素会先设置 new 使用.append()
方法添加的节点。
在没有选择body
的情况下,你没有在DOM树中插入你的节点 - 我猜测d3试图将新节点附加到document
对象,这导致{ {1}} discussed here。