2010-12-03 4 views
77

J'utilisejQuery .each() index?

$('#list option').each(function(){ 
//do stuff 
}); 

à boucle sur les options dans une liste. Je me demande comment je pourrais obtenir l'indice de la boucle actuelle?

car je ne veux pas avoir var i = 0; et à l'intérieur de la boucle ont i ++;

+7

Lire l'API, peut-être ... Et http://api.jquery.com/each/ –

Répondre

134
$('#list option').each(function(index){ 
    //do stuff 
    alert(index); 
}); 

alerte l'index :)

+1

* pas *, par exemple, 'function (valeur | element, index | key)', comme la méthode native équivalente 'forEach' et toutes les autres API populaires. – Barney

+3

Souvent, il est préférable de déboguer avec console.log que d'alerte. Une grande liste d'options ruinerait votre pile de fenêtres avec alerte. – MarkokraM

25

jQuery prend soin de cela pour vous. Le premier argument de votre fonction de rappel .each() est l'index de l'itération en cours de la boucle. Le second étant l'élément DOM courant lié So:

$('#list option').each(function(index, element){ 
    alert("Iteration: " + index) 
}); 
3
$('#list option').each(function(intIndex){ 
//do stuff 
}); 
9

De l'jQuery.each() documentation:

.each(function(index, Element)) 
    function(index, Element)A function to execute for each matched element. 

vous aurez donc à utiliser:

$('#list option').each(function(i,e){ 
    //do stuff 
}); 

... où l'index sera l'index et l'élément sera l'élément d'option dans la liste

1

surprise de voir que n'ont pas donné cette syntaxe.

.each syntaxe des données ou collection

jQuery.each(collection, callback(indexInArray, valueOfElement)); 

OU

jQuery.each(jQuery('#list option'), function(indexInArray, valueOfElement){ 
//your code here 
});