2010-11-05 45 views
25

Tengo div con el id ring-preview, tiene un número no especificado de img elementos con la clase dentro de él.jquery iterar sobre elementos secundarios

quisiera iterar sobre cada una de estas imágenes del niño y llamar:

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

Dónde this se refiere al elemento img y i se refiere a su posición dentro del div.

¿Cómo puedo hacer eso?

Respuesta

49

Está buscando el .each() method.
Por ejemplo:

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

Si los <img> elementos no son hijos directos, que necesita para llamar .find en lugar de .children.

8

Se puede utilizar un .each() en estos casos, así:

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

El primer parámetro a la función de devolución de llamada es el índice que está buscando.

+0

¿dónde está el 'each'? – borisdiakur

+0

@Lego - faltante, evidentemente :) ¡Reparado! –

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

Ese 'idx' y 'itm' en cada función funcionó para mí. –

Cuestiones relacionadas