2010-11-05 18 views
25

Mam div o identyfikatorze ring-preview, ma on nieokreśloną liczbę elementów img z klasą stone-preview w środku.jquery iteracyjne nad elementami potomnymi

Chciałbym iteracyjne nad każdym z tych obrazów dzieci i zadzwonić:

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

Gdzie this odnosi element img i i odnosi się do jego pozycji w div.

Jak mogę to zrobić?

Odpowiedz

49

Poszukujesz numeru .each() method.
Na przykład:

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

Jeśli <img> elementy nie są bezpośrednimi dzieci, trzeba zadzwonić .find zamiast .children.

8

Można użyć .each() W takich przypadkach jak ten:

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

Pierwszy parametr do funkcji wywołania zwrotnego jest indeksem jesteś po.

+0

gdzie jest "każdy"? – borisdiakur

+0

@Lego - brakuje, widocznie :) Naprawiono! –

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

Te "idx" i "itm" w każdej z funkcji działają dla mnie. –

Powiązane problemy