如何使用jQuery(或必要时使用纯JavaScript)向内联SVG添加<use>元素?

4

我在一个HTML5文档中使用了内联SVG,希望能够通过jQuery(或必要时使用纯JavaScript)添加元素。

我知道如何添加矩形、圆形或其他形状,但我还不知道如何重用现有的元素。

这是在jsFiddle上的一个测试:http://jsfiddle.net/nhoizey/uDVbn/

SVG代码:

<svg width="300" height="300">
  <symbol id="piece"><circle cx="50" cy="50" r="40" fill="green" /></symbol>
  <circle cx="70" cy="90" r="20" stroke="blue" fill="white" />
</svg>

JavaScript代码:
// it works!
var rect = $(document.createElementNS("http://www.w3.org/2000/svg","rect"))
  .attr({
    x: 10,
    y: 30,
    width: 50,
    height: 70,
    stroke: "red",
    fill: "white"
  });
$("svg").append(rect);

// it doesn't work
var newPiece = $(document.createElementNS("http://www.w3.org/2000/svg","use"))
  .attr({
    "xlink:href": "#piece",
    transform: "translate(100, 100)"
  });
$("svg").append(newPiece);

我知道有一个jQuery SVG插件,但是我想尽可能保持它的轻量化。
1个回答

4

添加 href 属性的正确方法是使用 setAttributeNS。

useElement.setAttributeNS("http://www.w3.org/1999/xlink", 'href', '#piece');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接