从Illustrator导出的SVG文件中,在d3.js中选择重复的ID

4

我目前正在尝试使用d3.js处理一个相当复杂的SVG,该SVG是一张楼层平面图,每个楼层都有自己的图层。要显示一个楼层,我只需要展示该层并隐藏其他层,这样在一个SVG中保持所有内容非常方便。

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

我的问题是:

  1. 在SVG中,是否严格规定不能重复使用id,即使在层次结构中也是如此?例如,1st_floor->elevator_a2nd_floor->elevator_a,它们永远不会同时可见。
  2. 是否有一种方法可以仅通过id的开头选择d3中的id(例如通过正则表达式或类似于jquery的方式)?例如,d3.select("[id^='elevator_a']")
1个回答

1
  1. 标识符不能重复,无论出现在哪里,它们都应该是唯一的。

  2. D3的选择器是CSS选择器。您可以使用正则表达式来匹配属性名称,使用与您提问中完全相同的语法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接