2013-07-18 9 views
5

Quindi un po 'di una domanda ipotetica (e non esitate a farmi sapere se c'è un altro post con la stessa domanda - non l'ho trovato comunque)val() possibilità di loop opposte a ciascuna()

Quindi, il metodo .val() restituisce il valore corrente del primo elemento corrispondente dal selettore. Esiste un altro metodo jquery "abbreviato" che ottiene il valore di tutti gli elementi corrispondenti e restituisce un array?

O sto più sicuro solo facendo questo:

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

Come ho detto sopra, ho cercato qualcosa, ma potrebbe essere solo che devo usare .each()

risposta

9

No, non c'è nessuna stenografia. Tuttavia, v'è un metodo più breve della tua:

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

e se si voleva davvero, è possibile creare il proprio scorciatoia:

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

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

un paio di alternative:

$.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

Vale la pena menzionare, questo è possibile in JavaScript normale quando si lavora anche su un array (senza l'eccesso '.get' e con un parametro. –

+2

+1 per '.map' ... –

+0

Lo chiamerei 'vals()' ma ok :) –

Problemi correlati