这主要与 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/