2010-11-05 18 views
25

Ho un div con l'ID ring-preview, ha un numero non specificato di img elementi con la classe stone-preview al suo interno.jquery iterate su elementi figlio

desidero iterare su ciascuna di queste immagini bambino e chiamare:

$(this).rotate(ring.stones[i].stone_rotation); 

Dove this riferisce all'elemento img e i si riferisce alla sua posizione all'interno del div.

Come posso farlo?

risposta

49

Stai cercando il .each() method.
Per esempio:

$('.ring-preview').children('img').each(function(i) { 
    $(this).rotate(ring.stones[i].stone_rotation); 
}); 

Se gli <img> elementi non sono figli diretti, avrete bisogno di chiamare .find invece di .children.

8

È possibile utilizzare un .each() in questi casi, come questo:

$("#ring-preview img.stone-preview").each(function(i) { 
    $(this).rotate(ring.stones[i].stone_rotation); 
}); 

Il primo parametro alla funzione di callback è l'indice che stai cercando.

+0

dov'è il "ciascuno"? – borisdiakur

+0

@Lego - mancante, evidentemente :) Risolto! –

5
$('#ring-preview img.stone-preview').each(function(idx, itm) { 
    $(itm).rotate(stones[idx].stone_rotation); 
}); 
+0

Che 'idx' e 'itm' in ogni funzione ha funzionato per me. –

Problemi correlati