svg - 克隆 svg 组

标签 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>

矩形就像一个容器,函数克隆矩形并留下其他元素。 那么有什么问题呢?

最佳答案

两件事:

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

关于svg - 克隆 svg 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658141/

相关文章:

JQuery + SVG 对象 : Capture click event properly

javascript - 如何使用 d3.js 拖动和旋转正交 map (地球仪)

android - Overflow-x : scroll ! 重要的是不能在 Samsung Internet 上使用已翻译的 SVG

sql - 如何在 SQL Server 中制作数据库的副本

java - 克隆 Java NamingEnumeration?

windows - "invalid command syntax"hg 使用 .ppk key 克隆 ssh 窗口

linux - clone() 系统调用无法正常工作

css - 解释应用于 SVG 元素的 CSS 'display' 属性?

java - Java SVG 图形界面中的属性修改

javascript - 尝试克隆表单并增加克隆的 id