在 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 中解决这个问题的一种方法是对每个元素进行唯一命名,但我认为这会使我的组织有点混乱。
我的问题是:
- 在 SVG 中不能重复任何 id 是否是严格的规则,即使它在层次结构中也是如此?例如。
1st_floor->elevator_a
、2nd_floor->elevator_a
永远不会同时可见。
- 有没有办法通过 id 的开头 select d3 中的 id(可能通过正则表达式或 jquery-like)?例如。
d3.select("[id^='elevator_a']")
ID 不得重复 -- 它们应该是唯一的,无论它们出现在何处。
D3 的选择器是 CSS selectors. You can use regular expressions for attribute names,完全使用您问题中的语法。
我目前正在尝试使用我在 Illustrator 中使用 d3.js 创建的相当复杂的 SVG。 SVG 是一个平面图,每一层都有自己的图层。要显示一层,我只需要显示该层,然后隐藏其他层,这样可以将所有内容都保存在一个 SVG 中非常方便。
我遇到的一个问题是,当我从 Illustrator 导出时,有一些元素具有相同的名称。例如,我在每个楼层上都有一个 Elevator A
元素。但是,当我导出到 SVG 时,它将通过将重复的 ID 重命名为 id = "elevator_a_1"
和 id = "elevator_a_2"
之类的名称(但不一定按顺序)来消除重复的 ID。我想我可以在 Illustrator 中解决这个问题的一种方法是对每个元素进行唯一命名,但我认为这会使我的组织有点混乱。
我的问题是:
- 在 SVG 中不能重复任何 id 是否是严格的规则,即使它在层次结构中也是如此?例如。
1st_floor->elevator_a
、2nd_floor->elevator_a
永远不会同时可见。 - 有没有办法通过 id 的开头 select d3 中的 id(可能通过正则表达式或 jquery-like)?例如。
d3.select("[id^='elevator_a']")
ID 不得重复 -- 它们应该是唯一的,无论它们出现在何处。
D3 的选择器是 CSS selectors. You can use regular expressions for attribute names,完全使用您问题中的语法。