2013-07-18 9 views
5

Więc trochę hipotetycznego pytania (i nie wahaj się dać mi znać, jeśli jest inny wpis z tym samym pytaniem - nie znalazłem ani jednego)Możliwości pętli val() przeciwstawiające się każdemu()

Metoda .val() zwraca bieżącą wartość pierwszego elementu dopasowanego przez selektor. Czy istnieje kolejna "skrócona" metoda jquery, która pobiera wartość wszystkich dopasowanych elementów i zwraca tablicę?

Albo ja najbezpieczniejszych właśnie to robi:

var myResult = []; 
$(".myClass").each(function(){ 
    myResult.push($(this).val()); 
}); 

Jak powiedziałem wyżej, szukałem czegoś, ale to może być tylko, że muszę używać .each()

Odpowiedz

9

Nie, nie ma bez stenogramów. Jednak nie jest krótsza metoda niż Twoja:

var myResult = $(".myClass").map(function(){ 
    return this.value; 
}).get(); 

i jeśli naprawdę chce, można utworzyć własny skrót:

$.fn.getValAsArray = function(){ 
    return this.map(function(){ return this.value; }).get(); 
}; 

var myResult = $(".myClass").getValAsArray(); 

jeszcze kilka możliwości:

$.map

var myResult = $.map($.makeArray($(".myClass")),function(input){ 
    return input.value; 
}); 
// or 
var myResult = $.map($(".myClass").get(),function(input){ 
    return input.value; 
}); 

[].map

var myResult = $.makeArray($(".myClass")).map(function(input){ 
    return input.value; 
}); 
// or 
var myResult = $(".myClass").get().map(function(input){ 
    return input.value; 
}); 
+0

Warto wspomnieć, że jest to możliwe w normalnym JavaScriptu podczas pracy nad tablicą (bez nadmiaru '.get' i parametru. –

+2

+1 dla '.map' ... –

+0

Nazwałbym to' vals() 'ale w porządku :) –

Powiązane problemy