2013-07-18 22 views
5

Also ein bisschen eine hypothetische Frage (und zögern Sie nicht, lassen Sie mich wissen, wenn es einen anderen Beitrag mit der gleichen Frage - Ich habe jedoch keinen gefunden)val() Schleife Möglichkeiten im Gegensatz zu jedem()

Die Methode .val() gibt also den aktuellen Wert des ersten vom Selektor abgeglichenen Elements zurück. Gibt es eine andere "Kurzschreib" jquery-Methode, die den Wert aller übereinstimmenden Elemente erhält und ein Array zurückgibt?

Oder bin ich sicherste gerade dies zu tun:

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

Wie ich bereits sagte, ich etwas sah, aber es könnte sein, dass ich verwenden .each()

Antwort

9

Nein, es gibt keine Kurzschrift. Allerdings gibt es ein kürzeres Verfahren als IhrFormal:

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

und wenn Sie wirklich wollten, könnten Sie Ihre eigene Kurzschrift erstellen:

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

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

noch ein paar Alternativen:

$.map

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

[].map

+0

Erwähnenswert ist, dass dies in normalem JavaScript auch bei der Arbeit an einem Array möglich ist (ohne den Überschuss '.get' und mit einem Parameter). –

+2

+1 für '.map' ... –

+0

Ich würde es' Vals() 'nennen, aber okay :) –

Verwandte Themen