Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery加载外部SVG并更改SVG_Jquery_Jquery Selectors_Svg_Jquery Svg - Fatal编程技术网

使用jQuery加载外部SVG并更改SVG

使用jQuery加载外部SVG并更改SVG,jquery,jquery-selectors,svg,jquery-svg,Jquery,Jquery Selectors,Svg,Jquery Svg,我需要加载一个现有的SVG文档,以便进行一些修改:更改颜色并用矩形替换所有圆 我读过一篇关于使用javascript访问SVG节点、Raphael扩展或JQuerySVG的文章 我决定使用jQuerySVG,因为在我读到的其中一个文档中写到:不可能用Raphael更改已加载的现有SVG。我不确定这是不是真的 另一方面,编写了一些软件:jQuerySVG插件过时了 我不确定这是否正确 现在,我使用jQuerySVG插件加载SVG。SVG由许多圆圈组成,如下所示: <svg version="

我需要加载一个现有的SVG文档,以便进行一些修改:更改颜色并用矩形替换所有圆

我读过一篇关于使用javascript访问SVG节点、Raphael扩展或JQuerySVG的文章

我决定使用jQuerySVG,因为在我读到的其中一个文档中写到:不可能用Raphael更改已加载的现有SVG。我不确定这是不是真的

另一方面,编写了一些软件:jQuerySVG插件过时了

我不确定这是否正确

现在,我使用jQuerySVG插件加载SVG。SVG由许多圆圈组成,如下所示:

<svg version="1.1" width="" height="">
 <rect class="background" x="0" y="0" width="136" height="136" style="fill:white"/>
 <circle class="dot" cx="10" cy="10" r="2"/>
 <circle class="dot" cx="14" cy="10" r="2"/>
 <circle class="dot" cx="18" cy="10" r="2"/>
 <circle class="dot" cx="22" cy="10" r="2"/>
  [...]
 <style>
  .dot {fill:#000000;}
 </style>
</svg>
mainSVG = $("#placehoplder").svg('get');
mainSVG.load(data, {addTo: true,  changeSize: false}); 
mainSVG.style('.dot {fill:'#f4a200'}');
这是可行的,但它向SVG添加了一个额外的样式元素/节点

因此,第一个问题是:如何更改/覆盖现有样式元素

达到第二个目标:我不知道如何处理这个问题

一般来说,我不知道如何选择SVG元素。使用谷歌,我仍然一次又一次地发现同样的问题,这对我没有帮助。就我所知,jQuerySVG文档也没有帮助。因为缺少基本的东西

例如,更改所有圆半径的简单测试不起作用

allCircles=$('*[class~="dot"]');
mainSVG.change(allCircles,{r:10});
第二个问题是: 如何按类或元素类型选择一组SVG元素以更改它们,或者我是否需要迭代


谢谢。

在网上搜索了一段时间后,我决定选择以下解决方案:

因此,第一个问题是:如何更改/覆盖现有样式元素

更改现有样式元素很困难,就像使用JS更改HTML样式元素一样。 我选择下面的方法是因为它看起来是最好的选择。最后,它删除了旧样式并添加了新样式:

在没有样式标记的服务器端创建SVG 将默认样式定义为javascript对象 svgStyle={.dot':{fill':'white'} 创建一个方法将svgStyle转换为HTML源代码,返回mySvgStyle='.dot{fill:white} 加载SVG并将样式元素应用于SVG mainSVG.stylemySvgStyle; 现在:一直以来,我都喜欢更改SVG样式,我删除了旧式SVG元素$'style',mainSVG.root.remove;,修改svgStyle JS对象添加或删除属性并创建新的SVG样式标记请参见上面清单中的3和4

如何按类或元素类型选择一组SVG元素以更改它们,或者我是否需要迭代

看起来,迭代是唯一的方法。jQuerySVG插件无法处理一组DOM SVG元素