2016-09-10 23 views
0

在jQuery中,你可以简单地通过提供字符串创建元素,像这样:捕捉SVG:字符串元素

var newElement = $('<div></div>'); 

我怎样才能做到在快SVG是一回事吗?我有一个像

<rect x="100" y="100" transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 1825.4047 1024.3746)" fill="#7EC242" width="230.02" height="56.723" stroke="#64bc46"/> 

一个字符串,我需要的元素,我可以追加到已经存在的文件快照。我尝试过片段,但他们没有我需要的所有功能来处理元素。

回答

3

我相信你可以用parse做到这一点(我删除了改造,使该代码可以在小SO片断窗口工作):

var s = Snap("#svg"); 
 
var string = '<rect x="100" y="100" fill="#7EC242" width="230.02" height="56.723" stroke="#64bc46"/>' 
 
var rect = Snap.parse(string); 
 
s.append(rect);
<script src="http://cdn.jsdelivr.net/snap.svg/0.1.0/snap.svg-min.js"></script> 
 
<svg id="svg" width="400" height="200"> 
 
</svg>

+0

谢谢,但得到的对象是片段,它不支持像attr()或appendTo()这样的操作。我正在写的函数是一个更大的应用程序的一部分,它需要返回调用“paper.circle(10,10,10)”时获得的相同类型的对象。我认为Snap元素只是一个包装器,所以应该可以将Fragment转换为Snap元素。我只是无法找到任何地方的信息 – itd

+1

你可以编辑生成的对象,你只需要选择它。您不能使用'rect'var来更改属性,但可以在将矩形对象添加到图形并编辑它之后选择该矩形对象。这里有一种可能性: s.selectAll(“[fill ='#7EC242']”)。attr({fill:'red'}) – AustinC

+0

或者对你的用例更好,只要将它分配给某个东西,你喜欢:var rect = s.selectAll(“[fill ='#7EC242']”) – AustinC