该函数如何获得索引值?

时间:2016-08-02 05:49:11

标签: javascript jquery anonymous-function

我浏览了一段代码片段,这个匿名函数传递了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;
        } 
    });
}

2 个答案:

答案 0 :(得分:4)

当你写:

$(".guess_box").each(function(index, value) 
    { $(".guess_box").each(function(index, value) 
        {
             //do something
        }

每个函数所使用的索引参数是一个迭代器,它以jquery选择器选择的项目的索引0到长度为1开始。

参考 - http://api.jquery.com/jquery.each/

答案 1 :(得分:2)

来自jQuery's docs

  

.each()方法旨在使DOM循环结构简洁   并且不易出错。调用时,它遍历DOM元素   这是jQuery对象的一部分。每次回调运行时,它都是   从0开始传递当前循环迭代。更重要的是,   回调是在当前DOM元素的上下文中触发的,所以   关键字this指的是元素。

这意味着在$('.guess_box')被调用之后,.each(...)将在从0开始到长度为1的情况下迭代返回的数组。这与在返回的数组上调用for循环非常相似。

以下代码段显示了使用jQuery&#39; .each()函数的迭代结果,与使用纯Javascript和for循环的类似迭代相比。

&#13;
&#13;
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;
&#13;
&#13;