有人知道有什么区别吗?

我的理解是,两者将返回相同的选择。

但是,当我执行追加操作时,如果我使用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")

为什么后者不起作用?

最佳答案

简短的答案是:“因为没有要追加的内容。”当您正确确定d3.selectAll("p")d3.select("body").selectAll("p")将选择相同的现有节点时,选择body元素首先会为使用.append()方法添加的新节点设置上下文。

如果不选择body,则在DOM树中没有插入节点的权限-我猜d3试图将新节点附加到document对象,这导致HIERARCHY_REQUEST_ERROR discussed here

关于javascript - D3.js:select (“body”).selectAll (“p”)和selectAll (“p”)之间有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8481737/

10-09 17:59