Javascript 使用JQuery更改svg内部的填充颜色

Javascript 使用JQuery更改svg内部的填充颜色,javascript,jquery,html,css,svg,Javascript,Jquery,Html,Css,Svg,我有一个SVG图像,它嵌入在“img src”标记中。svg包含带有颜色的不同路径,每个路径由id分隔。我想使用jquery更改每个id内的填充颜色 下面是我使用过的代码。但是颜色没有改变。通过大量搜索,我发现如果将svg直接添加到html中,它就会工作。一个有效的例子: 但是,如果通过“img src”添加svg,我该如何实现呢 内部html: <img src="images/hands.svg" width="70px"/> SVG示例: <path id="l1" f

我有一个SVG图像,它嵌入在“img src”标记中。svg包含带有颜色的不同路径,每个路径由id分隔。我想使用jquery更改每个id内的填充颜色

下面是我使用过的代码。但是颜色没有改变。通过大量搜索,我发现如果将svg直接添加到html中,它就会工作。一个有效的例子:

但是,如果通过“img src”添加svg,我该如何实现呢

内部html:

<img src="images/hands.svg" width="70px"/>
SVG示例:

<path id="l1" fill="#ffffff" d="M85.6,227.3L85.6,227.3c14.2-5.7,21.1-22,15.3-36.2l-35.4-87.5c-2.5-6.1-9.5-9.1-15.6-6.6
    l-29.3,11.9c-6.1,2.5-9.1,9.5-6.6,15.6L49.4,212C55.1,226.1,71.4,233,85.6,227.3z"/>
<path id="l2" fill="#ffffff" d="M133.8,206.6L133.8,206.6c15.2-1.5,26.4-15.2,24.9-30.4L142.7,55.9
    c-0.6-6.6-6.5-11.4-13.1-10.8l-31.4,3.1c-6.6,0.6-11.4,6.5-10.8,13.1l16.1,120.3C104.9,196.9,118.6,208.1,133.8,206.6z"/>
<path id="l3" fill="#ffffff" d="M181.8,219.6L181.8,219.6c15,3,29.7-6.8,32.7-21.8l22.8-151.7c1.3-6.5-2.9-12.8-9.4-14.1
    l-31-6.2c-6.5-1.3-12.8,2.9-14.1,9.4L160,186.9C157,201.9,166.9,216.6,181.8,219.6z"/>
<path id="l4" fill="#ffffff" d="M227.8,247.1L227.8,247.1c13.9,6.5,30.5,0.4,37-13.4l58.1-142c2.8-6,0.2-13.2-5.8-16
    l-28.6-13.4c-6-2.8-13.2-0.2-16,5.8l-59.4,137.7C206.6,219.7,208.3,238,227.8,247.1z"/>
<path id="l5" fill="#ffffff" d="M257.1,245.1l51.8-41l37,0.5l24.5,15.4L337.7,256l-90.1,90.2l-31.6,15.9
    C216.1,362.1,184.1,325.9,257.1,245.1z"/>

这可能会奏效

$('img.svg').each(function(){
    var $img = $(this);
    var imgClass = $img.attr('class');
    var imgURL = $img.attr('src');

    $.get(imgURL, function(data) {
        var $svg = $(data).find('svg');
        if(typeof imgClass !== 'undefined') {
            $svg = $svg.attr('class', imgClass+' style-color-black');
        }
        $svg = $svg.removeAttr('xmlns:a');
        $img.replaceWith($svg);
    }, 'xml');

});
来源:

这可能会奏效

$('img.svg').each(function(){
    var $img = $(this);
    var imgClass = $img.attr('class');
    var imgURL = $img.attr('src');

    $.get(imgURL, function(data) {
        var $svg = $(data).find('svg');
        if(typeof imgClass !== 'undefined') {
            $svg = $svg.attr('class', imgClass+' style-color-black');
        }
        $svg = $svg.removeAttr('xmlns:a');
        $img.replaceWith($svg);
    }, 'xml');

});

来源:

这可能会有所帮助-Gijo,您能否尝试将
fill
属性值更改为变量
currentColor
,并使用
color
属性切换颜色?这里有一个标记,但是如果没有你的图像托管,就无法进行测试。如果这不起作用,你可能需要使用另一种嵌入方法,如
,当你想与svg进行交互时,不建议使用
标记,因为
元素将只呈现为光栅。@Ricky_Ruiz已经尝试过对象方法。不工作此操作可能会有所帮助-Gijo,能否尝试将
fill
属性值更改为变量
currentColor
,并使用
color
属性切换颜色?这里有一个标记,但是如果没有你的图像托管,就无法进行测试。如果这不起作用,你可能需要使用另一种嵌入方法,如
,当你想与svg进行交互时,不建议使用
标记,因为
元素将只呈现为光栅。@Ricky_Ruiz已经尝试过对象方法。不起作用