```在`.each(function(i){})中的作用是什么?

时间:2013-04-04 06:54:26

标签: javascript jquery css api

http://jsfiddle.net/6x2Nb/

你好,它是来自jQuery文档的简单例子,我想知道为什么有

  $(document.body).click(function () {
      $( "div" ).each(function (i) {
        if ( this.style.color != "blue" ) {
          this.style.color = "blue";
        } else {
          this.style.color = "";
        }
      });
    });

为什么有功能(i)?它等于函数(),并且在执行时没有任何差别。 感谢

2 个答案:

答案 0 :(得分:5)

$.each接受一个带有2个参数的函数:索引和当前元素。但this也指向当前元素。所以这也可以写成:

$("div").each(function (index, element) {
    if (element.style.color != "blue") {
        element.style.color = "blue";
    } else {
        element.style.color = "";
    }
});

由于在此示例中未使用参数,因此可以省略它们。 Javascript允许您这样做。

所以基本上如果你不需要函数内部的索引,那么写一下就会更短:

$("div").each(function () {
    if (this.style.color != "blue") {
        this.style.color = "blue";
    } else {
        this.style.color = "";
    }
});

答案 1 :(得分:2)

i是您循环的对象的索引... $.each有两个可选参数index和value。在你的情况下,你正在分配可选参数但不使用它..因为this也指向当前的循环元素..你可以省略i

$( "div" ).each(function () {
   ... 

并且代码可以工作..