基本的jQuery函数

时间:2013-01-08 00:27:30

标签: javascript jquery

有人可以解释一下,为什么我们需要每个(功能(i) (i)做了什么?似乎 i 可以是任何字母。 为什么(i)是必要的?我不太明白。非常感谢

<body>
    <div>Click here</div>
  <div>to iterate through</div>
  <div>these divs.</div>
<script>
    $(document.body).click(function () {
      $( "div" ).each(function (i) {
        if ( this.style.color != "blue" ) {
          this.style.color = "blue";
        } else {
          this.style.color = "";
        }
      });
    });
</script>

6 个答案:

答案 0 :(得分:3)

回调函数的第一个参数是循环中迭代的索引。即循环计数器。在您的情况下,您根本不需要它,因为您没有使用它:

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

第二个参数是当前迭代的元素,即与this所指的相同。您可以使用该参数代替this。当然,要使用第二个参数,您还必须指定第一个参数,即使您不使用它:

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

答案 1 :(得分:1)

这可以是您想要的任何名称,它是该项目的索引,以防在该函数中有用。它在jQuery文档中进行了解释。 http://api.jquery.com/each/

答案 2 :(得分:1)

你可以在回调函数中调用我想要的任何内容,每个方法都会为每个匹配你的每个选择器的对象调用该回调(在你的情况下是所有的div)并将它传递给你的回调参数(i)或者其他你调用所以你可以为每次迭代操作每个对象。

希望我明确表示,

干杯

答案 3 :(得分:1)

嗯,我不知道这是不是你要问的但是根据文件

.each( function(index, Element) )

这是签名,因此您的案例中的i将是当前项目索引的参数。因此,如果div中有10个内容,每次调用该函数时,它都会传递div中第i个元素的索引i。

答案 4 :(得分:1)

.each用于迭代应用它的元素集合。第一个参数(在您的示例中为i)提供集合中当前元素的索引值。

完整的签名是:

.each( function(index, Element) ) 

当你使用重载时:

.each( function(index) ) 

如何在函数规范(indexiblahparam1等)中命名参数并不重要,索引值将传递给该参数。

在您的示例中,此参数值没有提供额外的好处,因为您的用例不需要它,但是,有很多用例是必不可少的参数。

答案 5 :(得分:1)

i,j,k是整数的标准符号。它自然用于循环遍历可枚举列表(如数组或节点列表),其中每个元素索引是一个整数。对于复杂循环,第一级将使用i,第二级j等。

这只是一个约定,在实践中你可以使用其他名称,例如jQuery文档中显示的“index”,它使你的代码更具可读性。缺点是它使你的脚本更长,但是今天广泛使用缩小/压缩这不应该是一个问题。

当然,如果你没有在循环中引用索引,你可以省略它。