我正在尝试使用javascript(jQuery)将某些svg
元素(如rect
,text
等)动态包装成一个单一的元素g
这是 svg 最初的样子
<div id="container">
<svg ...>
<rect .../>
<circle .../>
<text ...>...</text>
</svg>
</div>
我用来包装到标签中的脚本(基于我收到的有用答案@Inserting a (g) node in the middle of a tree (SVG) using jQuery )。g
$("#container svg > *").wrapAll('<g id="parent" />');
变形后的svg
样子是这样的
<div id="container">
<g id="parent">
<svg ...>
<rect .../>
<circle .../>
<text ...>...</text>
</svg>
</g>
</div>
但是 UI 上什么也没有显示。甚至萤火虫也显示g
为灰色(就像隐藏元素一样)。
呼叫$("#parent").show();
在某些情况下有效,但并非全部
问题:
- 为什么
g
动态创建,默认隐藏? - 为什么
$("#parent").show()
工作不一致? - 是否有另一种(更好的)动态分组元素的方法?
- 我对 SVG 完全陌生,但对 jQuery 和 DOM 操作相对熟悉。我将 SVG 视为另一个标签的方式是错误的吗?
在 Firefox (15.0.1) 和 Chrome (21.0.1180.89) 上都试过了,结果相同