1285 Stimmen

jQuery erhalten spezifische Option Tag Text

Na gut, sagen wir, ich habe das hier:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

Wie würde der Selektor aussehen, wenn ich "Option B" erhalten möchte, wenn ich den Wert "2" habe?

Bitte beachten Sie, dass es hier nicht um die Frage geht, wie man die ausgewählt Textwert, sondern ein beliebiger davon, ob ausgewählt oder nicht, je nach Wertattribut. Ich habe es versucht:

$("#list[value='2']").text();

Aber es funktioniert nicht.

0 Stimmen

Verwenden Sie für diese Zeitspanne: $("#list option").filter(function () { return $(this).html() == "stuff"; }).val();

1274voto

Wenn Sie die Option mit einem Wert von 2 erhalten möchten, verwenden Sie

$("#list option[value='2']").text();

Wenn Sie die aktuell gewählte Option erhalten möchten, verwenden Sie

$("#list option:selected").text();

11 Stimmen

Um den Wert anstelle des Textes zu erhalten, müssen Sie schreiben: - $("select#list").val(); Ich weiß, dass dies nicht die eigentliche Antwort auf die gestellte Frage ist, dachte aber dennoch, diesen Punkt für Neulinge zu erwähnen, die über Google kommen.

0 Stimmen

Ich verwende $("#list option:selected").text() und $("#list option:selected").attr('value')

0 Stimmen

Um den ausgewählten Text zu erhalten (auch wenn die Frage nicht speziell danach gefragt hat), ist diese Methode besser, da man nicht wissen muss, was der ausgewählte Wert ist.

1147voto

nickf Punkte 517253

Es wird nach einem Element mit id gesucht list die eine Eigenschaft hat value gleich 2 .
Was Sie wollen, ist die option Kind des list :

$("#list option[value='2']").text()

5 Stimmen

Vielen Dank für diesen Hinweis. Hier ist diese Antwort erweitert, wenn Sie den Wert dynamisch erhalten möchten: var selectValue = document.getElementById('list').value; var selectOption = $("#list option[value=" + selectValue + "]").text(); ///gutes Beispiel nickf.

287 Stimmen

@Kevin, in diesem Fall sollten Sie vielleicht die Antwort unter dieser verwenden. $('#list option:selected').text()

7 Stimmen

@nickf , und noch einfacher, $('#list').val()

135voto

raphie Punkte 3229

Dies funktionierte perfekt für mich, ich war auf der Suche nach einem Weg, um zwei verschiedene Werte mit Optionen von MySQL generiert zu senden, und die folgenden ist generisch und dynamisch:

$(this).find("option:selected").text();

Wie in einem der Kommentare erwähnt. Damit war ich in der Lage, eine dynamische Funktion zu erstellen, die mit allen meinen Auswahlfeldern funktioniert, die ich beide Werte, den Optionswert und den Text, erhalten möchte.

Vor ein paar Tagen bemerkte ich, dass bei der Aktualisierung der jQuery von 1.6 bis 1.9 der Website, die ich diesen Code verwendet, dies aufhören zu arbeiten... wahrscheinlich war ein Konflikt mit einem anderen Stück Code... wie auch immer, die Lösung war zu entfernen Option aus dem find() aufrufen:

$(this).find(":selected").text();

Das war meine Lösung ... verwenden Sie es nur, wenn Sie ein Problem nach der Aktualisierung Ihrer jQuery haben.

2 Stimmen

Laut WebStorm 8 ist dies vermutlich der effizientere Weg, dies zu tun.

2 Stimmen

Diese Antwort ist zwar aufschlussreich und hat mir bei einem Problem geholfen, das ich hatte, aber sie beantwortet die Frage nicht richtig, um es kurz zu machen: Bitte beachten Sie, dass es hier nicht darum geht, den Wert des ausgewählten Textes zu erhalten, sondern nur einen beliebigen Wert, ob ausgewählt oder nicht, abhängig vom Attribut value.

0 Stimmen

Es ist wahr, @StubbornShowaGuy, dass es nicht durch den Wert angegeben ist. Die Lösung ist die Annahme, dass jemand nach dem Label sucht, wenn der Wert gesendet wird. Aber dafür gibt es keinen Grund, wenn man beide Werte gleichzeitig senden kann... Beispiel var me = $(this).find(':selected'); var val = me.val(); var txt = me.text().trim(); ... In diesem Fall ist es nicht nötig, eine zweite Anfrage zu stellen.

108voto

asyadiqin Punkte 1617

Auf der Grundlage des von Paolo geposteten Original-HTML habe ich mir das Folgende ausgedacht.

$("#list").change(function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Es wurde getestet, dass es mit Internet Explorer und Firefox funktioniert.

11 Stimmen

Eine Alternative dazu ist: $("option:selected", this).text()

0 Stimmen

Dies ist eine bessere Antwort, da sie komplexe Szenarien berücksichtigt und nicht nur statisches HTML und einfache Javascript-Ereignisse.

37voto

m3ct0n Punkte 387
$("#list option:selected").each(function() {
   alert($(this).text());
});  

für mehrere ausgewählte Werte in der #list Element.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X