有人知道有什么区别吗?
我的理解是,两者将返回相同的选择。
但是,当我执行追加操作时,如果我使用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/