我浏览了一段代码片段,这个匿名函数传递了index和value的值作为参数。这有什么用,因为我们根本没有手动调用函数? (除了通过事件调用)。此外,该索引值(随后在函数中使用)从何处起源?究竟是谁传递了这些价值,它们来自哪里?
var hideCode = function houdini()
{
var numRand = getRandom(4);
$(".guess_box").each(function(index, value)
{
if(numRand == index)
{
$(this).append("<span id='has_discount'></span>");
return false;
}
});
}
答案 0 :(得分:4)
当你写:
$(".guess_box").each(function(index, value)
{ $(".guess_box").each(function(index, value)
{
//do something
}
每个函数所使用的索引参数是一个迭代器,它以jquery选择器选择的项目的索引0到长度为1开始。
答案 1 :(得分:2)
.each()方法旨在使DOM循环结构简洁 并且不易出错。调用时,它遍历DOM元素 这是jQuery对象的一部分。每次回调运行时,它都是 从0开始传递当前循环迭代。更重要的是, 回调是在当前DOM元素的上下文中触发的,所以 关键字this指的是元素。
这意味着在$('.guess_box')
被调用之后,.each(...)
将在从0开始到长度为1的情况下迭代返回的数组。这与在返回的数组上调用for循环非常相似。
以下代码段显示了使用jQuery&#39; .each()
函数的迭代结果,与使用纯Javascript和for循环的类似迭代相比。
var showCode = function houdini() {
// Prints the results of each iteration so you can see what happens.
$(".guess_box").each(function(index, value) {
console.log($(this).text());
});
// In pure JS you would do something like this, which is very similar.
var boxes = document.getElementsByClassName('guess_box');
for (var i = 0; i < boxes.length; i++)
console.log(boxes.item(i));
}
$('#tester').click(function() {
showCode();
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="guess_box">test 1</div>
<div class="guess_box">test 2</div>
<div class="guess_box">test 3</div>
<div class="guess_box">test 4</div>
<button id="tester">click me</button>
&#13;