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

Selecting duplicate id's from an SVG exported from Illustrator in d3.js

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

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

我的问题是:

  1. 在 SVG 中不能重复任何 id 是否是严格的规则,即使它在层次结构中也是如此?例如。 1st_floor->elevator_a2nd_floor->elevator_a 永远不会同时可见。
  2. 有没有办法通过 id 的开头 select d3 中的 id(可能通过正则表达式或 jquery-like)?例如。 d3.select("[id^='elevator_a']")
  1. ID 不得重复 -- 它们应该是唯一的,无论它们出现在何处。

  2. D3 的选择器是 CSS selectors. You can use regular expressions for attribute names,完全使用您问题中的语法。