ajax请求svg,jQueryappend到AJAX加载的SVG问题
我已成功通过AJAX从外部⽂件加载了⼀些svg:$("#svg").load(svgUrl + " svg", function() {
// do stuff
});
我的HTML看起来像这样:
...
我可以看到图形很好。现在,我想向已加载的svg添加⼀些其他svg元素。我将脚本更改为:
$("#svg").load(svgUrl + " svg", function() {
$("svg").append("");
// do stuff
});
由于某些原因,添加的元素在Firebug中显⽰为隐藏,并且⽆论我放⼊其中的xml如何,都⽆法在⽹页上看到它。
武汉市最新疫情最新消息的轨迹更新:
多亏了echo-flow,我能够 append 到我的SVG中。现在,如果我尝试从另⼀个xml⽂件加载指南针svg,它不会出现在我的DOM中。⽬前,我的代码如下所⽰:
$("#svg").load(obj.svgUrl + " svg", function() {
var svgns = "/2000/svg";
var g = ateElementNS(svgns,"g");
g.setAttributeNS(null,'id','compass');
$("svg").append(g);
$("#compass").load("files/l");
});
如果我在Firebug的控制台中查看,我会看到AJAX指南针标记请求的结果是成功的,但为空。
最佳答案
jQuery并不是真正为了解XML namespace ⽽构建的,因此很可能会解析字符串"",以使⽣成的DOM节点位于默认 namespace (⽽不是SVG namespace )中。您可以通过使⽤常规DOM创建节点来解决此问题。如下所⽰:svgns = "/2000/svg"
创新驱动发展战略与企业知识产权管理
$("#svg").load(svgUrl + " svg", function() {
var g = ateElementNS(svgns,"g");
g.setAttributeNS(null,'id','compass');
$("svg").append(g);
jquery下载文件请求
//do stuff
selector歌});linux乌班图系统安装
查看dubbo服务器如果您需要创建更复杂的结构,则建议您查看jquery-svg库,该库具有⽤于⽣成SVG DOM的更简洁的
API。
更新了
我误解了您正在尝试加载SVG⽂档并将其 append 到您的宿主HTML⽂档中-相反,我认为您正在尝试使⽤脚本⽣成SVG。为了解决您的问题,我建议您执⾏以下操作(未经测试,但应该可以):
//get the SVG document using XMLHTTPRequest
$.get(svgUrl + " svg",
function(svgDoc){
//import contents of the svg document into this document
var importedSVGRootElement = document.importNode(svgDoc.documentElement,true);
//append the imported SVG root element to the appropriate HTML element
$("#svg").append(importedSVGRootElement);
},
"xml");
关于jQuery append 到AJAX加载的SVG问题,我们在Stack Overflow上到⼀个类似的问题:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。