javascript - 如何在 snap.svg 中迭代组的元素/子元素?

标签 javascript svg snap.svg

假设我有一个 <g> 类型的 svg 组称为“group1”,它有许多子项(其他形状等)。我想使用 snap.svg 迭代它们。

var group1 = s.select('#group1');
group1.forEach(function(child) {

   // doesn't work

});

有什么想法吗?

最佳答案

您可以找到 forEach here 的 Snap 文档

首先,这里需要使用 s.selectAll 而不是 s.select。

var set = s.selectAll

Select 将选择第一个元素,selectAll 将选择与 css 选择器匹配的所有元素并将它们放入 Set 中,以便您可以使用 forEach。

然后您可以迭代它们,类似于您的示例。因此,我会使用“*”选择器来获取子项。

s.selectAll('#group1 *')
 .forEach( function( el ) {
    el.attr({ fill: 'blue' });
});

如果您不是特别需要 forEach,因为您只想为它们设置一些属性,则可以避免它,因为某些方法可以应用于集合。所以上面的例子也可以写成...

s.selectAll('#group1 *').attr({ fill: 'red' });

关于javascript - 如何在 snap.svg 中迭代组的元素/子元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40773808/

相关文章:

javascript - 将其绑定(bind)到 Handlebars 按钮

php - 根据屏幕分辨率获取图像

javascript - chrome 可以下载图片,但 firefox 不行

javascript - 在fabricjs Canvas 上实现ClipTo功能

javascript - 仅在检查器上修改 HTML 后才会渲染 SVG 折线

svg - snap svg尝试以中心点旋转对象但不起作用

javascript - 我如何在悬停时设置 SVG <use> 元素的样式?

javascript - React Native无法将firebase key 传递给组件

javascript - 如何遍历JS对象和里面的所有数组和对象,与它的副本进行比较?

svg - 在圆弧 SVG 上应用平移旋转和缩放后获取新路径