克隆一个svg组

时间:2011-10-05 07:39:56

标签: svg clone

我有一个包含一些元素的svg组,我想克隆组,问题是函数克隆只有一个元素组。 这是函数

 <script type="text/ecmascript"><![CDATA[
    function clone(evt) {
        var cloneElement = evt.target.cloneNode(false);
        var newx = 100;
        var newy = 500;
        cloneElement.setAttributeNS(null,"x",newx);
        cloneElement.setAttributeNS(null,"y",newy);
        document.getElementById("layer1").appendChild(cloneElement);
    }

]]></script>

svg看起来像

<g id="layer1" onclick="clone(evt)">
<rect>
<path>
<circle>
<circle>
</g>

矩形就像一个容器,所发生的是该函数克隆矩形并离开其他元素。 那有什么不对?

1 个答案:

答案 0 :(得分:10)

两件事:

    如果你想要一个深度克隆的树,
  • cloneNode应该被传递,否则它只会克隆一个元素
  • evt.target将始终是事件发生的元素,并且g元素永远不会被直接命中,鼠标事件只会从子项中冒泡到那里。如果您想要当前正在处理事件的元素(在您的情况下将是g元素),则可以使用evt.currentTarget