【发布时间】:2014-12-24 21:47:25
【问题描述】:
我有 nodes 变量,它是一个包含图表中所有节点的数组。每个节点在 DOM 中都有一个 SVG g(组)SVG 元素。
要选择具有 DOM 元素的数据,我会使用 d3.select(myElement).data()[0],但是如何获取具有数据的 DOM 元素?
【问题讨论】:
标签: javascript dom svg d3.js
我有 nodes 变量,它是一个包含图表中所有节点的数组。每个节点在 DOM 中都有一个 SVG g(组)SVG 元素。
要选择具有 DOM 元素的数据,我会使用 d3.select(myElement).data()[0],但是如何获取具有数据的 DOM 元素?
【问题讨论】:
标签: javascript dom svg d3.js
您可以使用 D3 的数据匹配来做到这一点。我们的想法是让数据为您“识别”正确的元素。
d3.selectAll("allMyElements").data([datumIwantElementFor], suitableKeyFunction);
完整的演示here。
明确地说,我确实不建议采用这种方法。当您向文档添加更多元素并意外选择其中一些元素、在多个地方使用相同数据或更改数据格式时,这很容易出现问题。除非您知道自己在寻找什么,否则它会导致很难发现的错误。
更好的方法是从该数据中为您绑定数据的每个元素分配一个 ID 或类,以便您在拥有数据时可以直接选择它。这样也会更有效率。
【讨论】: