2011-02-08 2 views
0

Je suis en train de sélectionner chaque premier enfant d'un parent avec la classe .PaymentEnfants de nombreux parents jQuery Selector

Exemple HTML:

<div class='payment'> 
    <input id="payments_0_:date_paid" name="payments[0][:date_paid]" type="text" /> 
    <br> 
    <input id="payments_0_:amount_paid" name="payments[0][:amount_paid]" type="text" /> 
</div> 
<div class='payment'> 
    <input id="payments_1_:date_paid" name="payments[0][:date_paid]" type="text" /> 
    <br> 
    <input id="payments_1_:amount_paid" name="payments[0][:amount_paid]" type="text" /> 
</div> 
<div class='payment'> 
    <input id="payments_2_:date_paid" name="payments[0][:date_paid]" type="text" /> 
    <br> 
    <input id="payments_2_:amount_paid" name="payments[0][:amount_paid]" type="text" /> 
</div> 

Comment puis-je itérer chaque .Paiement et valider si le le premier enfant dans chaque est sous une certaine qualité?

Ceci est ma tentative:

$.each($(".payment"), function(key, value) { 
    alert($("value input:first").val()); 
}); 

Mais la peine que j'ai ici utilise le var value à obtenir cette valeur d'attribut()

Toutes les idées?

Répondre

2

Depuis les entrées en question sont un premier enfant, vous pouvez cibler dans le sélecteur d'origine en utilisant le :first-child selector(docs), puis utilisez la propriété native value pour obtenir sa valeur:

$('.payment > input:first-child').each(function() { 
    alert(this.value); 
}); 

Il peut être utile de les réduire à un ensemble de ceux qui ne satisfont pas (ou ne satisfont pas) la validation en utilisant la méthode filter()(docs) ou la méthode not()(docs).

2

Au lieu d'utiliser $.each(), utilisez .each() sur la sélection jQuery à la place que vous avez accès à $(this):

$('.payment').each(function(key) { 
    alert($(this).find('input:first').val()); 
}); 
+0

Merci BoltClock! – Trip

1

Essayez d'utiliser $("input:first", value).val()