Mam div i ma kilka elementów wejściowych ... Chciałbym iterować przez każdy z tych elementów. Pomysły?
257
Użyj children()
i each()
, możesz opcjonalnie przekazać selektor dochildren
$('#mydiv').children('input').each(function () {
alert(this.value); // "this" is the current element in the loop
});
Możesz także użyć bezpośredniego selektora podrzędnego:
$('#mydiv > input').each(function () { /* ... */ });
each()
. Sprawdź dokumenty, do których link znajduje się w powyższej odpowiedzi.Możliwe jest także iterowanie wszystkich elementów w określonym kontekście, bez względu na to, jak głęboko są zagnieżdżone:
Drugim parametrem $ („# mydiv”) przekazywanym do selektora „wejściowego” jQuery jest kontekst. W takim przypadku klauzula each () będzie iterować przez wszystkie elementy wejściowe w kontenerze #mydiv, nawet jeśli nie są one bezpośrednimi potomkami #mydiv.
źródło
Jeśli chcesz rekurencyjnie zapętlać elementy potomne :
źródło
Można to również zrobić w ten sposób:
źródło
Powoduje to iterację wszystkich elementów podrzędnych, a ich element z wartością indeksu można uzyskać osobno, używając odpowiednio elementu i indeksu .
źródło
children () jest pętlą samą w sobie.
źródło
Nie sądzę, że musisz użyć
each()
, możesz użyć standardowej pętliw ten sposób możesz mieć standardowe funkcje pętli, takie jak
break
icontinue
działa domyślnierównież
debugging will be easier
źródło
$.each()
zawsze jest wolniejsze niżfor
pętla i jest to jedyna odpowiedź, która go używa. Kluczem tutaj jest użycie.eq()
do uzyskania dostępu do rzeczywistego elementu wchildren
tablicy, a nie[]
notacji nawiasu ( ).