我目前正在尝试使用d3.js处理一个相当复杂的SVG,该SVG是一张楼层平面图,每个楼层都有自己的图层。要显示一个楼层,我只需要展示该层并隐藏其他层,这样在一个SVG中保持所有内容非常方便。
然而,我遇到的问题是,在从Illustrator导出时,存在一些具有相同名称的元素。例如,我在每个楼层上都有一个名为Elevator A
的元素。但是,当我导出到SVG时,它将通过将其重命名为类似于id = "elevator_a_1"
和id = "elevator_a_2"
(但不一定按顺序)来消除重复的id。我想,在Illustrator中解决这个问题的一种方法是为每个元素命名唯一的名称,但我认为这会使我的组织变得混乱。
我的问题是:
- 在SVG中,是否严格规定不能重复使用id,即使在层次结构中也是如此?例如,
1st_floor->elevator_a
,2nd_floor->elevator_a
,它们永远不会同时可见。 - 是否有一种方法可以仅通过id的开头选择d3中的id(例如通过正则表达式或类似于jquery的方式)?例如,
d3.select("[id^='elevator_a']")