如何在 snap.svg 中迭代组的 elements/children?
How to iterate on a group's elements/children in snap.svg?
假设我有一个名为 "group1" 的 <g>
类型的 svg 组,它有许多子项(其他形状等)。我想使用 snap.svg.
对它们进行迭代
var group1 = s.select('#group1');
group1.forEach(function(child) {
// doesn't work
});
有什么想法吗?
您可以找到 forEach 的 Snap 文档 here
首先,你需要在这里使用s.selectAll而不是s.select。
var set = s.selectAll
Select 将选择第一个元素,selectAll 将选择与 css 选择器匹配的所有元素并将它们放入一个集合中,这样您就可以使用 forEach.
然后你可以迭代它们,类似于你的例子。例如,我会使用“*”选择器来获取子项。
s.selectAll('#group1 *')
.forEach( function( el ) {
el.attr({ fill: 'blue' });
});
如果你不是特别需要 forEach,因为你只是想为它们设置一些属性,你可以避免它,因为一些方法可以应用于集合。所以上面的例子也可以写成...
s.selectAll('#group1 *').attr({ fill: 'red' });
假设我有一个名为 "group1" 的 <g>
类型的 svg 组,它有许多子项(其他形状等)。我想使用 snap.svg.
var group1 = s.select('#group1');
group1.forEach(function(child) {
// doesn't work
});
有什么想法吗?
您可以找到 forEach 的 Snap 文档 here
首先,你需要在这里使用s.selectAll而不是s.select。
var set = s.selectAll
Select 将选择第一个元素,selectAll 将选择与 css 选择器匹配的所有元素并将它们放入一个集合中,这样您就可以使用 forEach.
然后你可以迭代它们,类似于你的例子。例如,我会使用“*”选择器来获取子项。
s.selectAll('#group1 *')
.forEach( function( el ) {
el.attr({ fill: 'blue' });
});
如果你不是特别需要 forEach,因为你只是想为它们设置一些属性,你可以避免它,因为一些方法可以应用于集合。所以上面的例子也可以写成...
s.selectAll('#group1 *').attr({ fill: 'red' });