javascript - 处理元素时 d3 与 svg

标签 javascript svg d3.js

使用之间是否有偏好

d3.selectAll()

svg.selectAll()

var svg = d3.select("#someChart")
            .append("svg")
            .attr("width", w)
            .attr("height", h);

在处理(创建、删除)svg 标签中的元素时?

最佳答案

正如 AJ_91 指出的那样,d3.selectAll(...)搜索整个文档,而 svg.selectAll(...)将搜索限制为选择中的 SVG。后者对于大型文档的性能预计更高。

但是,还有另一个重要的区别:如果 var svg引用包含多个单个元素的 d3 选择,然后引用类似 svg.selectAll('path') 的子选择将选择全部<path>每个 <svg> 内的 s正如预期的那样,但由此产生的选择也将保持对 <path> 之间的“表兄弟”关系的“认识”。具有不同的<svg> parent 。

这称为嵌套选择,如 bostock explains here 。嵌套选择用于构建表格,因为表格意味着 2 级层次结构(n 行,然后每行 m 列)。嵌套 svg-selection 类似于表格,如果您有一个多级数据集,您想从中创建多个 SVG,每个 SVG 都包含多个趋势线路径(或多个条形图 <rect> 等)。

关于javascript - 处理元素时 d3 与 svg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29211683/

相关文章:

javascript - 如何在 websocket 上 .append() 新消息以使用 CSS 样式页面?

svg - 如何判断 SVG 何时完成渲染

javascript - 如何等待 <object> 中的 SVG 在某些 JS 触发之前完成加载?

svg - 关于SVG(使用还是不使用?)

javascript - D3/Angular 获取窗口大小

javascript - 我们如何在 c3js 中为多组条形图添加条形图之间的空间?

javascript - 为 D3 层次图创建 JSON 对象

javascript - 如何在调整内部 div 大小后设置相对于单击事件和初始滚动的滚动位置?

javascript - ng-click 使用参数更改 angularjs 中的路由

javascript - 为什么 for ... in 只显示用 class.prototype 定义的方法?