RaphaelJS Set.forEach()

10

我在raphaeljs的文档中阅读到 Set.forEach 的描述,但不理解它是如何工作的。请问有人能给我一个使用示例吗。

我看过了raphaeljs的文档并了解了Set对象和forEach方法,但需要更多关于该方法的信息才能提供使用示例。

3个回答

19

这里有一个可用的示例:

http://jsfiddle.net/9X6rM/

这是重要的部分:

set.forEach(function(e){
    e.attr({fill:'#000'})
})

一开始可能有点棘手,但当你掌握了它,就会很方便。您需要将要在每个元素上执行的函数传递给forEach()方法,并且此函数需要像参数一样具有要绑定到该元素的变量名称。因此,在这种情况下,e是正在处理的矩形。懂了吗?


谢谢limoragni和Grooveek,你们真的帮了我。 - Artur Keyan
1
不用谢。paper.forEach也是一样的。如需更多信息,可以参考这个网站:http://www.irunmywebsite.com/raphael/additionalhelp.php?v=2#pagetop - limoragni
老话“时间就是金钱”变成了“时间就是爱”。我也喜欢这个网站上许多友好的回答,所以我们扯平了! - limoragni

3

这个主题对于理解forEach的工作原理非常有帮助。

编辑:

Raphaël文档中,您可以找到一个可行的示例。

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();

请问您能否给我一个使用示例? - Artur Keyan

2

以下是 Raphael 的 forEach 文档中未提及的一些内容:

函数定义需要传入什么参数

set.forEach(function(element, index){
    element.attr({fill:'#000'});
    alert('This is the element that can be accessed as set['+index+']');
})

回调函数传递了两个参数:

  1. 当前查看的 Raphael 元素。
  2. 该 Raphael 元素在集合中的位置的索引号。

this 在 Raphael 的 forEach 循环中的作用域与周围的函数相同(不像 jQuery 的 .each())。

可能导致崩溃或意外行为

  • 与 jQuery 的 .each() 函数不同,如果将单个 Raphael 元素而不是集合传递给 Raphael 的 .forEach(),它会崩溃。如果变量可能包含一个元素或多个元素的集合,请首先检查 Raphael 对象的类型
  • 如上所述,Raphael 的 .forEach() 不像 jQuery 那样创建闭包 - 它只是一个数组的迭代。每次迭代中的变量不会在该迭代中“冻结”,它们可以被后续迭代覆盖。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接