Javascript d3.js-enter()序列中的空selectAll()无效?
当选择为空时,标准的Javascript d3.js-enter()序列中的空selectAll()无效?,javascript,d3.js,Javascript,D3.js,当选择为空时,标准的enter().append()序列中的初始selectAll(…)的效果如何?似乎只有append有任何效果。例如: index.html(节略) 创造 <div id="example"> <p>a</p> <p>b</p> <p>c</p> </div> a b c “福”在哪里?如果我们做的是一个空的选择,那么我们在selectAll中输入的内容有关系吗
enter().append()
序列中的初始selectAll(…)
的效果如何?似乎只有append
有任何效果。例如:
index.html(节略)
创造
<div id="example">
<p>a</p>
<p>b</p>
<p>c</p>
</div>
a
b
c
“福”在哪里?如果我们做的是一个空的选择,那么我们在selectAll
中输入的内容有关系吗
例如,能够执行selectAll(“.foo”).enter().append(“p”)
将所有创建的
添加到类中,而不是执行所需的…append(“p”).attr(“class”,“foo”)
我遗漏了什么吗?对于空选择,只要选择器与任何现有元素不匹配(否则它将不是空选择),那么
selectAll()中的内容就无关紧要了。至于为什么不能用(“.foo”)进行空选择来设置输入元素的类,我只能猜测Mike的感受:如果选择为空,selectAll()选择器不会设置输入元素的类或类型,因为这样的行为会根据选择是否为空而改变(因为您并不总是希望选择器影响附加在非空选择中的内容)。显式进行空选择是一种常见的方法。感谢@AndrewReid,这对它的作用以及为什么它不应该是任何其他方式很有意义。感谢链接,我没有看到那篇文章。
var data = ["a", "b", "c"];
var vis = d3.select("#example");
vis.selectAll("foo")
.data(data)
.enter()
.append("p")
.text(function(d) { return d; });
<div id="example">
<p>a</p>
<p>b</p>
<p>c</p>
</div>