从d3.js中从Illustrator导出的SVG中选择重复的ID

时间:2015-06-18 14:37:38

标签: jquery regex svg d3.js adobe-illustrator

我目前正在尝试使用d3.js在Illustrator中创建的相当复杂的SVG。 SVG是平面图,每层都是自己的层。要显示一个楼层,我只需要显示该层,并隐藏其他层,这非常方便将它们保存在一个SVG中。

我遇到的一个问题是,当我从Illustrator导出时,有一些具有相同名称的元素。例如,我在每个楼层都有一个Elevator A元素。当我导出到SVG时,它会通过将那些重命名为id = "elevator_a_1"id = "elevator_a_2"(但不一定按顺序)来消除重复的ID。我想在Illustrator中解决问题的一种方法是对每个元素进行唯一命名,但我认为这会使我的组织陷入混乱。

我的问题是:

  1. 严格的规则是,即使SVG在层次结构中,也不能在SVG中重复id?例如。 1st_floor->elevator_a2nd_floor->elevator_a,永远不会同时出现。
  2. 有没有办法通过id的开头(可能是通过正则表达式或jquery-like)在d3中选择一个id?例如。 d3.select("[id^='elevator_a']")

1 个答案:

答案 0 :(得分:1)

  1. 不得重复使用ID - 无论它们出现在何处,它们都应该是唯一的。

  2. D3的选择器为CSS selectors。您可以使用attribute names的正则表达式,完全使用您问题中的语法。