【问题标题】:With d3.js, how do you modify corresponding nodes when you have multiple selections for the same data?使用d3.js,同一数据多选时如何修改对应节点?
【发布时间】:2012-01-30 07:04:16
【问题描述】:

我使用相同的数据来创建可视化的几个不同部分。我想在选择的一个节点上创建一个鼠标悬停事件,以修改另一个选择中的相应节点。什么是惯用的 d3 方式来做到这一点? (我知道我可以使用 id,或嵌套选择,或将信息存储在两个选择范围内的地图中......但这些对我来说似乎都是混乱的策略)

附带说明,如果有一个很好的“d3 idioms”参考,在执行常见任务时可能会非常有帮助。

【问题讨论】:

    标签: javascript data-visualization d3.js


    【解决方案1】:

    选择通常是短暂的;如果您可以轻松地从文档中重新选择它们,则无需保留它们。因此,按 id 选择是一个合理的选择。

    如果您不想为元素提供唯一的 ID(这在创建一般可视化时有时会很痛苦),那么另一种选择是通过绑定数据存储对关联元素的引用。例如:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 2017-11-12
      相关资源
      最近更新 更多