我在文档raphaeljs中读到Set.forEach的描述,并且无法理解 这个怎么运作。请任何人都可以给我一个使用示例。
答案 0 :(得分:18)
这里有一个有效的例子:
这是它的重要部分:
set.forEach(function(e){
e.attr({fill:'#000'})
})
起初它有点棘手,但是当它得到它时它非常方便。您需要将要在每个元素上执行的函数传递给forEach()
方法,并且此函数需要像参数一样具有绑定到元素的变量名称。因此,在这种情况下,e
是正在处理的矩形。知道了吗?
答案 1 :(得分:3)
This thread非常有助于了解forEach
的工作原理
编辑:
中有一个有效的例子Raphael.el.red = function () {
this.attr({fill: "#f00"});
};
Raphael.st.red = function () {
this.forEach(function (el) {
el.red();
});
};
// then use it
paper.set(paper.circle(100, 100, 20), paper.circle(110, 100, 20)).red();
答案 2 :(得分:2)
Raphael forEach
文档中遗漏了一些内容:
set.forEach(function(element, index){
element.attr({fill:'#000'});
alert('This is the element that can be accessed as set['+index+']');
})
传递给回调函数的两个参数:
this
周期范围内的 forEach
与周围的函数没有变化(与jQuery的.each()
不同)。
.each()
函数不同,Raphael的.forEach()
如果传递了一个单独的Raphael元素而不是一个集合,则会崩溃。如果变量可能包含一个元素,或者可能包含一组多个元素check what type of Raphael object it is first。.forEach()
并没有像jQuery那样创建一个闭包 - 它实际上只是一个数组的迭代。每次迭代中的变量在该迭代中不会被“冻结”,可以通过以下迭代覆盖它们。