【发布时间】:2013-02-06 17:20:54
【问题描述】:
我正在使用 jQuery 将元素添加到嵌入式 SVG,如下所示:
var rect = SVG('rect');
$(rect).attr( { x: left,
y: top,
width: right - left,
height: bottom - top,
style: style } );
$(parentElement).append(rect);
parentElement 可以是例如 $('g:first', svgRoot),其中 svgRoot 指的是嵌入的 SVG 元素。
function SVG(elementName) {
return document.createElementNS('http://www.w3.org/2000/svg', elementName);
}
这很好,新的矩形显示在浏览器中并添加到 DOM:
但是,删除此矩形失败。它仍然显示在浏览器中并存在于 DOM 中:
$(rect).remove();
我也试过
rect.parentNode.removeChild(rect);
这会导致错误消息“Uncaught TypeError: Cannot call method 'removeChild' of null”。
你知道我该如何解决这个问题吗? 在我的项目中无法使用 jQuery SVG 或其他插件/框架。
【问题讨论】:
-
你能用文本代码替换 svg 代码的截图吗...更容易复制和粘贴并在你的确切代码上运行测试。
-
jQuery SVG 的存在是因为普通的 jQuery 不能很好地与 SVG 配合使用。您正在走上一条令人头疼的道路。
-
遗憾的是,jQuery SVG 不能很好地与当前版本的 jQuery 配合使用。应该可以找到使用纯 JavaScript/DOM 的解决方案。稍后我将替换屏幕截图。
标签: javascript jquery html svg