2012-05-19 20 views
9

Próbuję uzyskać wartość wejściową w każdej pętli pola wyboru, nie mogę dowiedzieć się, jak uzyskać to do pracy, wartość utrzymuje wyprowadzanie jako pierwsza wartość pola wyboru.jQuery uzyskać wartość wejściową w pętli .each

$('.custemb, input[name=cb], input[class=multadd]').live("click", function() { 

    $('input[class=multadd]:checked').each(function(index) { 
     val = index + 2; 
     valu = $('input[class=multadd]:checked').val(); 
     multiz = multiz + '&aid' + val + '=' + valu; 
    }); 
}); 

problemem jest wyjście zmiennej valu jest pierwszym wyboru z ogólną każda pętla, a nie prąd pole pętli, trzeba aktualną wartość.

Wszelkie pomysły?

Odpowiedz

31

Można użyć this dostęp do bieżącego elementu w pętli:

valu = $(this).val(); 

bieżącego elementu jest również przesyłany jako parametr do funkcji zwrotnej, więc można go podnieść:

.each(function(index, elem) { 

Następnie użyj parametru:

valu = $(elem).val(); 
+0

Chciałbym zapytać dlaczego muszę użyć selektora na "elem", aby uzyskać dostęp do wartości, jeśli "elem" jest już elementem wejściowym? Dzięki – mkmnstr

+1

@mkmnstr: Bo 'elem' jest elementem, a nie obiektem jQuery dla elementu. Funkcja '$()' pobiera różne rodzaje parametrów, nie tylko selektory. Jeśli wyślesz element, po prostu utworzysz obiekt jQuery zawierający ten element. Wywołanie '$ (this)' w pierwszym przykładzie używa funkcji w ten sam sposób. – Guffa

+0

dziękuję za wyjaśnienie, wszystko jasne już teraz! Twoje zdrowie! – mkmnstr

3
$('.custemb, input[name=cb], input[class=multadd]').live("click", function() { 

    $('input[class=multadd]:checked').each(function(index) { 
     var $this = $(this); 
     val = index + 2; 
     valu = $this.val(); 
     multiz = multiz + '&aid' + val + '=' + valu; 
    }); 
}); 
+1

'.each()' oferuje drugi parametr 'element' który jest alternatywą dla' this' –

+1

@AndreasNiedermair który prawdopodobnie wyjątkiem jednego sprawność wyszukiwania i mikroinsetu. Dobra rozmowa, kolego –

+1

nie dostałeś tego ... używając drugiego parametru możesz (w innych scenariuszach) wyodrębnić metodę dla każdej iteracji, a zatem być może stworzyć scenariusz ponownego magicznego powtórzenia ... –

2

Zastosowanie this znaleźć kontroli, który został kliknięty

$('input[class=multadd]:checked').each(function(index) { 
     val = index + 2; 
     valu = $(this).val(); 
     multiz = multiz + '&aid' + val + '=' + valu; 
    }); 
+1

lub użyj drugiego parametru' element' ... –

1
var texts= $(".class_name").map(function() { 
    return $(this).val();   
}).get(); 
+0

, dlaczego potrzeba .get()? to funkcja AJAX. – Kivylius

Powiązane problemy