它似乎有效,但您的示例存在一些问题。
首先,您不能html()
在 SVG 元素上使用(请参阅此处的答案:Why .html() doesn't work with SVG selectors using jquery?),因此这取决于您要对g
元素做什么。
其次,您将g
元素附加到div
,但它需要存在于svg
元素中。所以对于这样的页面:
<div>
<svg>
<g><path d='m10,10l10,0,0,-10,-10,0'></path></g>
</svg>
</div>
您可以像这样克隆g
元素:
g = $("svg g").clone();
$('svg').append(g);
// Move the cloned square
g.children().first().attr('d', 'm100,100l10,0,0,-10,-10,0');
因此,现在您可以使用该示例中的变量g做任何您想做的事情(如果您需要直接开始编辑内部 XML 而不是使用 jQuery 来修改内容,请参阅链接的答案)。
小提琴:http: //jsfiddle.net/SpaceDog/sXbE3/
要获取您需要使用的字符串,XMLSerializer
如上面链接的答案中所述:
var s = new XMLSerializer();
var str = s.serializeToString(g[0]);
console.log(str);
这里我g[0]
用来获取 g 的 DOM 元素。如果你只是想要内容试试(g.children().first())[0]
。我已经更新了小提琴。
但是,根据您要对字符串执行的操作,您可能不需要这样做。jQuery 可以直接修改元素——这取决于你想要做什么。