2010-01-16 4 views
1

que signifie ce qui suit?

$.each(json.results, function(i, item) { 
    ... 
} 

je sorte de comprendre les autres parties de la ligne, mais si vous pouviez expliquer cela aussi, je vous en serais reconnaissant.

+0

Je mis à jour ma réponse pour expliquer les valeurs des paramètres et ce qu'ils signifient. –

Répondre

3

$.each fournit un itérateur simple et exécutera la fonction de rappel une fois pour chaque élément du tableau.

Pour mes exemples, laisse supposer:

var json = { 
    results: [1, 2, 3] 
}; 

En plus d'utiliser les paramètres (index, item), la variable this dans chaque rappel peut être utilisé pour faire référence à l'élément en cours.

MISE À JOUR: Cet exemple modifié pour montrer l'utilisation des autres paramètres:

$.each(json.results, function(index, item){ 
    console.log(this + " " + index + " " + item); 
}); 
// Outputs: 
// 1 0 1 
// 2 1 2 
// 3 2 3 

Le premier paramètre est l'indice de l'élément courant dans la boucle. C'est un index basé sur zéro. Le paramètre second est l'élément de l'itération en cours. Vous pouvez utiliser this ou la variable, mais la variable est très pratique dans des situations comme celle-ci:

$.each (json.results, function(index, item){ 
    // this == number 
    // item == number 
    $('div').click(function(e){ 
     // this == div 
     // item == number 
    }); 
}); 

De plus, il y a quelques contrôles que vous pouvez utiliser semblable aux déclarations break et continue.

Si vous voulez continue ou next à tout moment, utilisez return true;

$.each(json.results, function(i, item){ 
    if(this == 2) return true; 
    // do something else 
}); 

Si vous voulez break, utilisez return false;

var f; 
$.each(json.results, function(i, item){ 
    if(this == 2){ 
     f = this; 
     return false; // exits the iterator 
    } 
}); 
+0

+1 Bien placé, Neiner. Comme toujours! – Sampson

0

.each $ est essentiellement un idiome d'itération, semblable à javascripts:

for (x in container) 

sauf qu'il itère sur les valeurs, au lieu des clés (ou indices dans le cas du tableau).

+0

ce qui entre dans i et item, et comment sait-il quoi y mettre? – MedicineMan

0

Il itère sur les membres d'un objet. Un exemple:

var obj = { 
    alpha : 'A', 
    beta : 'B', 
    3 : 'C' 
}; 

$.each(obj, function(key, val) { 
    console.log(key); // alpha, beta, 3 
    console.log(val); // A, B, C 
    console.log(this); // A, B, C 
}); 

Edit: En fait, ce qui précède est un mauvais exemple du contexte de this, parce que si votre valeur est une chaîne ou un nombre, il est converti du littéral (« C ») à un objet (nouveau String ("C")), mais pour d'autres choses (fonctions, éléments, tableaux, etc), il est intact.

1

Cela signifie simplement que vous voulez faire quelque chose avec chaque résultat trouvé dans json.results. Dans les accolades, le résultat courant vous manipulez est connu par this, vous pouvez donc faire quelque chose comme:

var json = { 'results':{'name':'jonathan', 'age':'26'} }; 

$.each(json.results, function(i,o){ 
    alert(this); 
    // First iteration : 'Jonathan' 
    // Second Iteration: '26' 
});