d3 selectAll vs jQuery选择器

时间:2014-10-09 22:25:03

标签: jquery d3.js

来自文档:

  

d3.selectAll(选择器)

     

选择与指定选择器匹配的所有元素。要素   将在文档遍历顺序(从上到下)中选择。如果不   当前文档中的元素与指定的选择器匹配,返回   空的选择。

现在实践中:

<div class="nv-series"></div>
<div class="nv-series"></div>
<div class="nv-series"></div>

脚本:

console.log(d3.selectAll(".nv-series").length);
console.log($(".nv-series").length);

d3记录1!和jquery 3!

这可能是正常的,但我不明白。有人能解释为什么d3会记录1吗?

1 个答案:

答案 0 :(得分:4)

请勿使用.length - 使用.size(),如下所示:

console.log(d3.selectAll(".nv-series").size());

d3选择(d3.selectAll的结果)是一个数组数组。碰巧(在您的情况下),您期望的长度3可以通过d3.selectAll(".nv-series")[0].length得到。但要避免这样做。这种表示的原因超出了本讨论的范围。但要带走的是,或许与jQuery不同,d3选择的数组表示被认为是内部的,因此避免对其执行任何数组操作(例如检查.length)。相反,请使用api方法,例如.size().node().empty()等。