Idiomatische jQuery, um alle Optionen in einer Listbox in eine durch Kommas getrennte Zeichenfolge zu erhalten?

7

Wo lb ein Listenfeld ist, txtfield ist ein Textfeld, dieser Code nimmt alle Werte der Optionen, legt sie in ein Array und erstellt daraus eine durch Kommas getrennte Liste:

%Vor%

lb.options.toString () funktioniert offensichtlich nicht, weil es ein Array von Optionen (Wert und Text) ist. Ich habe nichts Succint gefunden als das.

Was ist der jQuery-Weg, dies zu tun? Ich habe versucht, mit $(lb).each() herumzuspielen, aber ich kann es anscheinend nicht auf die gleiche Weise zum Laufen bringen.

    
Cade Roux 16.11.2010, 22:44
quelle

6 Antworten

13
%Vor%

Diese verwendet .map() , um ein jQuery-Objekt zu erstellen, indem value von jedem option und dann verwendet .get() , um das Array aus dem Objekt zu extrahieren.

BEARBEITEN Wie @Nick Craver im Kommentar unten notiert ist, wenn Sie Um eine optimale Leistung zu erhalten (mit jQuery), ist es sinnvoller die $.map() Variation zu verwenden, als Sie bereits haben eine Sammlung. Siehe sein Antwort für Details.

BEARBEITEN: Um eine bessere Leistung zu erzielen, führen Sie Ihre for -Schleife aus, aber cachen Sie die Verweise auf die Eigenschaften. Es macht einen Unterschied .

%Vor%     
user113716 16.11.2010, 22:49
quelle
6

Die jQuery-Version ist .map() wie folgt:

%Vor%

Oder ein bisschen schneller mit $.map() wie folgt:

%Vor%

Beide sind jedoch deutlich weniger effizient als eine for -Schleife, gehen Sie mit der normalen JavaScript-Version, die Sie bereits haben.

    
Nick Craver 16.11.2010 22:50
quelle
5

Sehen Sie sich map() an ..

%Vor%     
Quintin Robinson 16.11.2010 22:50
quelle
3

Dies ist die jQuery-Entsprechung zu Ihrem Code. Es gibt jedoch elegantere Lösungen.

%Vor%     
jwueller 16.11.2010 22:49
quelle
2

Könnte es so gemacht werden, aber ich bin mir nicht sicher, was Sie erreichen wollen?

%Vor%     
El Ronnoco 16.11.2010 23:05
quelle
1

Siehe Demo hier: Fiddler Demo

Sie können die mehrfach ausgewählte Option Textwerte mit Trennzeichen erhalten.

%Vor% %Vor%
    
Jaydeep Shil 14.10.2015 14:39
quelle

Tags und Links