2011-12-30 17 views
1

我用同样的数据来创建我的可视化的几个不同的部分。我想在选择的一个节点上创建一个鼠标悬停事件,以修改另一个选择中的相应节点。什么是习惯性的D3方法来做到这一点? (我知道我可以使用身份证,或嵌套的选择,或存储信息在两个选择范围内的地图...但这些都对我来说似乎凌乱的策略)随着d3.js,你怎么修改相应的节点时,你有相同数据的多个选择?

作为一个方面说明,如果有一个很好的“d3习惯用语”参考可能在做常见任务时非常有用。

回答

1

选择通常都是瞬态;如果您可以轻松地从文档中重新选择它们,则无需保留它们。所以,选择id是一个合理的选择。

如果你不想让你的元素的唯一ID(有时统称创建可视化时疼痛),那么另一种选择是存储通过绑定的数据相关的元素的引用。例如:

selection.each(function(d) { d.element = this; }) 

现在,假设相同的数据d被绑定到另一个元素,你可以d3.select(d.element)选择原始元素。您可以选择一个比“元素”更具体的名称来清除您所指的两个(原始和装饰性)元素中的哪一个。

在另一方面,如果你有不同的元素不同的数据,那么你需要用不同的方式将它们连接在一起。如果你不想使用一个id或其他合适的选择器,那么一个引用映射也是合理的。

相关问题