svg - 将任意数据附加到 D3.js 中的对象

标签 svg d3.js

这主要与 D3.js 的“最佳实践”有关。我想在创建页面上的不同 svg 元素后将任意信息附加到它们。在 D3 中,看起来通常是从数据集中生成 svg 元素。我想随时将数据附加到这些 svg 元素,而不添加它们的 HTML 属性。

有什么好的方法吗?我是否需要使用辅助数组/对象,或者有没有办法将数据应用到元素本身?

最佳答案

您可以使用datum method如果你想附加任意数据:

D3.select('#mynodeId').datum( mydata );

然后您可以再次访问该值:

var mydata = D3.select('#mynodeId').datum();

在内部,D3 将使用节点的 __data__ 属性,就像通过 selectAll 从数据集创建节点时一样,输入附加序列。

请注意,如果您已经有了对 DOM 节点的引用,您可以将其作为参数传递给 D3.select,而不是根据选择器语法重新查找:

D3.select( anExistingDOMNodeReference ).datum( mydata );

来自the API doc :

d3.select(node): Selects the specified node. This is useful if you already have a reference to a node, such as d3.select(this) within an event listener, or a global such as document.body.

关于svg - 将任意数据附加到 D3.js 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582206/

相关文章:

javascript - 在 Cloudmade 和 Android 中使用 Polymaps

android - Android 上的 SVG 支持,当前状态

javascript - SVG 中的多个类

javascript - javascript参数背后的概念是什么?

javascript - D3 : SVG Background: Blurry

javascript - 使用 c3.js 将数据添加到图表

javascript - 调试! SVG Logo 和工具提示错误

javascript - 使用JavaScript复制CSS或SMIL动画

javascript - 在 iOS 上使用 Chrome 不会触发图像 onLoad 事件

d3.js - ForeignObject 在 IE 中不工作