有人可以解释一下,为什么我们需要每个(功能(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>
答案 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) )
如何在函数规范(index
,i
,blah
,param1
等)中命名参数并不重要,索引值将传递给该参数。
在您的示例中,此参数值没有提供额外的好处,因为您的用例不需要它,但是,有很多用例是必不可少的参数。
答案 5 :(得分:1)
i,j,k是整数的标准符号。它自然用于循环遍历可枚举列表(如数组或节点列表),其中每个元素索引是一个整数。对于复杂循环,第一级将使用i,第二级j等。
这只是一个约定,在实践中你可以使用其他名称,例如jQuery文档中显示的“index”,它使你的代码更具可读性。缺点是它使你的脚本更长,但是今天广泛使用缩小/压缩这不应该是一个问题。
当然,如果你没有在循环中引用索引,你可以省略它。