Я пытаюсь выбрать слой по его свойству inkscape:label
, чтобы иметь возможность показать / скрыть слой на веб-сайте.
function hideFOO() {
if(d3.select("#hideFOO:checked").node()){
d3.select("#layer11").attr("visibility", "hidden");
} else {
d3.select("#layer11").attr("visibility", "visible");
}
}
SVG:
<g
inkscape:groupmode="layer"
id="layer11"
inkscape:label="foo"
style="display:inline"> ...
Это работает просто отлично - но я бы хотел иметь возможность указать inkscape:label
, так как идентификаторы слоев не совпадают для нескольких SVG, но имена слоев.
Когда я пытаюсь что-то вроде;d3.select(":inkscape:label='foo'").attr("visibility", "hidden");
Мне только что сказали;SyntaxError: ':inkscape:label='foo'' is not a valid selector
или d3.select("$('g[inkscape:label="foo"]')").attr("visibility", "hidden");
, который говорит мне SyntaxError: missing ) after argument list
хотя все мои ')' закрыты?!
Основано на решении ниже - я также пытался с d3.select('g[inkscape\\:label = "foo"]').attr("visibility", "hidden");
, но этотакже не скрывая слой - при воспроизведении в консоли разработчика для браузера кажется, что d3.select
не соответствует пути.