2010-07-25 5 views
3

J'ai un tableau comme celui-ci:question jQuery sur la boucle à travers un réseau

var gridArray = [ 1,2,0,1,2,3,2,1,2,3,4,4,3,2,2,2,0 ] 

Et je voudrais une fonction jQuery each() comme ceci:

$('li.node').each(function() { 
       loop through the array 
          var rndTile = the current array digit 

       $(this).css({ 'background-image': 'url(images/'+arrayDigit+'.jpg' }); 
      }); 

Comment pourrais-je mettre en œuvre ce?

+0

ne pas boucler sur un tableau avec 'for..in' ou' .each() '! – jAndy

Répondre

2

Vous devez passer des paramètres à votre chaque rappel.

$(gridArray).each(function (i, val) { 
    // i is the index in this loop. 
    // val is the value at gridArray[i] in this loop. 
}); 
+0

Groovy, acclamations v. Beaucoup! –

+0

@Neurofluxation - Si vous allez utiliser '.each()' pour parcourir votre tableau, vous n'avez pas besoin de créer un objet jQuery. Il suffit de faire '.each de $ (gridArray, fonction (i, val) {...});' – user113716

0

Jetez un oeil à la jQuery Documentation pour jQuery.each. La signature de la fonction est:

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

Je ne suis pas 100% sûr de ce que vous essayez d'accomplir, il est donc difficile de donner un exemple concret, mais cela, vous devez aller.

0

En supposant que chaque membre du tableau correspondends à un <li>:

$('li.node').each(function(i) { 
    var rndTile = gridArray[i]; 
    $(this).css({ 'background-image': 'url(images/'+rndTile+'.jpg' }); 
}); 
0
$('li.node').each(function(index) { 
    var rndTile = gridArray[index % gridArray.length]; 
    $(this).css({ 'background-image': 'url(images/' + rndTile + '.jpg' }); 
}); 
0

Il est en général une mauvaise idée de boucle sur un tableau avec for in ou pire encore, jQuerys .each(). Looping comme ça signifie beaucoup de frais généraux inutiles.

Utilisez uniquement for..in ou .each() si vous ne savez pas combien d'articles que vous avez à traiter (qui signifie à son tour en fait ne l'utiliser que pour objets).

utiliser une boucle for normale pour itérer sur un tableau.

for(var n = 0, len = gridArray.length; n < len; n++){ 
} 
+0

ne pas décourager (ou dévaloriser) tous les développeurs web avides là-bas, mais s'il vous plaît, * * S'il vous plaît, apprendre JavaScript * avant * vous apprenez une bibliothèque! (c'est-à-dire jQuery, MooTools, Dojo, ou Prototype) Cela fera de vous un meilleur développeur et votre code sera plus rapide/meilleur! – xj9

+0

@indieinvader: ce commentaire n'a pas de sens pour mon message? : p – jAndy

+0

Je suppose que c'était un peu hors contexte, ce que j'essayais de dire, c'est que cela devrait être évident. Mais parce que la plupart des nouveaux développeurs JS n'apprennent pas la langue, ils apprennent jQuery, et ils finissent par écrire par inadvertance du mauvais code ou pire, confus quand ils découvrent que jQuery! == JavaScript! tl; dr: vous avez raison, 'for' est meilleur que' .each() ' – xj9

Questions connexes