jquery 通过inkskape:label属性选择SVG元素

zzwlnbp8  于 2023-01-20  发布在  jQuery
关注(0)|答案(4)|浏览(174)

我有一个加载了SVG Jquery插件http://keith-wood.name/svg.html的外部SVG。
<g groupmode="layer" id="layer1" inkscape:label="myLabel"></g>
我可以通过这一行得到元素标签的值
$('#layer1', svg.root()).attr("inkscape:label");
这将返回值“myLabel”。
如何使用该值选择相同的元素?
尝试
var myElement = $('g[inkscape:label="myLabel"]', svg.root());
但运气不好。
有什么建议吗?
蒂亚!

mjqavswn

mjqavswn1#

根据引用jquery文档的this SO post,您最好的选择是var myElement = $('g[inkscape\\:label="myLabel"]', svg.root());

2wnc66cl

2wnc66cl2#

这是不可能的,我使它的工作,如你所要求的。我已经到达的解决方案,是复制标签,但使用underscode而不是两个点,像这样:

$('path').each(function() {
    $(this).attr({
        "inkscape_label" : $(this).attr('inkscape:label')
    });
});

然后我可以按我想要的标签进行选择,如下所示:

$('[inkscape_label = ...
pgx2nnw8

pgx2nnw83#

对我来说,唯一有效的解决方案是this one

const t = document.querySelectorAll('g') 
const layer = Array.from(t)
    .filter(t => t.getAttribute('inkscape:label') === 'myLabel')[0]
kx7yvsdv

kx7yvsdv4#

标题不是很描述,所以我结束了这里时,试图找出如何选择它通过CSS。
如果这对其他人有帮助:

<style>
[inkscape\:label="MyNamedLayer"] {
   /*green*/
        filter: invert(42%) sepia(93%) saturate(1352%) hue-rotate(87deg) brightness(119%) contrast(119%);
        filter: invert(48%) sepia(79%) saturate(2476%) hue-rotate(86deg) brightness(118%) contrast(119%);
    }
</style>

相关问题