首页 > 解决方案 > Snap.svg:如何选择最外层 SVG 元素的所有子元素,但不从(可能)嵌套的 SVG 元素中选择

问题描述

我试图从片段的最外层 SVG 元素中获取所有(直接)子元素 - 或者换句话说:片段的所有 2 级元素。我使用这段代码:fragment.selectAll("svg>*")

只要给定片段中只有一个 SVG 元素,此方法就可以工作。但是,如果有嵌套的 SVG 元素(根据https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg可以),这也会返回层次结构中更靠后的元素 -意思是第 3、第 4 或更高级别。

<svg id="svg_1" height="380mm" width="490mm" viewBox="0 0 490 380" version="1.0">
    <g id="g_1" transform="translate(57.5,47.5)">
        <svg id="svg_2" version="1.1" height="5" width="5" viewBox="0 0 5 5">
            <path d="m 4.9997035,2.4940359 ... z"/>
        </svg>
    </g>
    <g id="g_2" transform="translate(57.5,97.5)">
        <svg id="svg_3" version="1.1" height="5" width="5" viewBox="0 0 5 5">
            <path d="m 4.9997035,2.4940359 ... z"/>
        </svg>
    </g>
    ...
</svg>

我的结果是,我只想要g元素(ids:g_1g_2),但我也得到了这两个path元素。

似乎很有希望用这一行替换上面的行: fragment.select("svg").children() 但是,这一行包含一堆#text 元素,这些元素不包含在原始元素中,我不知道如何从查询结果中删除它们。

标签: csssvgsnap.svg

解决方案


推荐阅读