2016-08-02 10 views
1

Я просмотрел фрагмент кода, и этой анонимной функции передается значение индекса и значения в качестве параметров. Как это полезно, поскольку мы вообще не вызываем функцию вручную? (кроме вызовов через события). Кроме того, откуда происходит это значение индекса (которое впоследствии используется в функции)? Кто именно передает эти ценности и откуда они берутся?Как эта функция получает значение индекса?

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

http://api.jquery.com/jquery.each/ –

+2

'index' является п-й вхождение в' .guess_box' элемента. Это сериализован jQuery каждый после DOM-манипуляции. Если у нас есть 3 элемента с классом '.guess_box' в DOM, то каждый метод будет зацикливаться с индексом 1, 2, 3 ... – dinesh

+0

@JaromandaX Я уже знаю основы javascript с первого окна Javascript, но никогда видел, что анонимная функция передается значение раньше. Вот почему я был в замешательстве. В соответствии с предоставленными ответами каждая() является функцией jQuery, а не javascript, и, следовательно, моя путаница в отношении этого оправдана. –

ответ

2

jQuery's docs От:

Метод

.each() разработан, чтобы сделать DOM циклические конструкции кратким и менее подвержены ошибкам. При вызове он выполняет итерацию над элементами DOM , которые являются частью объекта jQuery. Каждый раз, когда обратный вызов работает, он равен , прошедшему итерацию текущего цикла, начиная с 0. Более того, обратный вызов запускается в контексте текущего элемента DOM, поэтому ключевое слово this относится к элементу.

Что это означает, что после того, как $('.guess_box') называется, в .each(...) перебирает возвращенный массив начиная от 0 до длины-1. Это очень похоже на вызов цикла for для возвращаемого массива.

Следующий фрагмент показывает результаты итерации с использованием функции jQuery .each() по сравнению с аналогичной итерацией с использованием чистого Javascript и for-loop.

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(); 
 
});
<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>

4

При записи:

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

Индекс аргумента, принятые функции в каждом итератор, который начинается с индекса 0 до длины - 1 элемента, выбранного селектором Jquery.

см - http://api.jquery.com/jquery.each/

 Смежные вопросы

  • Нет связанных вопросов^_^