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

13

有人知道它们之间的区别吗?

我理解它们都会返回相同的选择结果。

但是当我进行append操作时,如果我使用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个回答

17
这里的简短回答是,“因为没有要添加到的内容”。虽然您正确地选择了d3.selectAll(“p”)d3.select(“body”)。selectAll(“p”)会选择同样的现有节点,但首先选择body元素为使用.append()方法添加的节点设置上下文。
如果不选择body,则无法在DOM树中插入节点 - 我猜d3试图将新节点附加到document对象,这导致HIERARCHY_REQUEST_ERROR 在这里讨论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接