【发布时间】:2013-03-04 18:45:51
【问题描述】:
在this JSFiddle(下面的代码)中,我只是尝试克隆路径并更改其设置。但是,当我运行代码时,它给出了 rect2 没有定义方法 setAttribute() 的错误。
但是,相反,当我在 rect1 上运行 change() 方法时,它不会产生错误,就像在 this JSFiddle 中一样。所以我怀疑这是克隆方法的问题,因为它不会产生完整的克隆。
我做错了什么?如果扩展有问题,有什么好的解决方法?谢谢
$('body').svg({onLoad: function(svg){
var path = svg.createPath();
var rect1 = svg.path(
path.move( 50, 50 )
.line( 200, 0, true )
.line( 0, 200, true )
.line( -200, 0, true )
.close(),
{
fill: 'none',
stroke: '#00f',
strokeWidth: 30
}
);
var rect2 = svg.clone(null, rect1);
svg.change(rect2, {
fill: 'none',
stroke: '#f00',
strokeWidth: 10
});
}});
到目前为止我的努力:
- 如果我在克隆之前执行 alert(rect1),它会显示“[object SVGPathElement]”。
- 如果我在克隆后执行 alert(rect2),它还会显示“[object SVGPathElement]。
- 如果我执行 alert(rect1.setAttribute),它会显示“function setAttribute() {[native code]}”
- 如果我执行 alert(rect2.setAttribute),它会显示“未定义”。
【问题讨论】:
-
你使用的是哪个 jQuery 插件?
clone是那个 svg 插件的 API 吗? -
这是基思·伍德的。是的,克隆在那个 API 和文档中,在“SVG Defs”下的参考部分keith-wood.name/svgRef.html
标签: jquery svg settings clone jquery-svg