jQuery erhält einen bestimmten Optionstag-Text

1234

Also gut, sag ich habe das:

<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 hier nicht gefragt wird, wie der ausgewählte Textwert abgerufen werden soll, sondern nur einer von ihnen, ob ausgewählt oder nicht, abhängig vom Wertattribut. Ich habe es versucht:

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

Aber es funktioniert nicht.

Paolo Bergantino
quelle
Verwenden Sie für diesen Zeitraum:$("#list option").filter(function () { return $(this).html() == "stuff"; }).val();
Turm

Antworten:

1122

Es wird nach einem Element mit der ID gesucht, listdessen Eigenschaft valuegleich ist 2.
Was Sie wollen, ist das optionKind von list:

$("#list option[value='2']").text()
nickf
quelle
4
Danke für diesen Nickf. Hier ist diese Antwort erweitert, wenn Sie den Wert dynamisch abrufen möchten: var selectValue = document.getElementById ('list'). Value; var selectOption = $ ("# list option [value =" + selectValue + "]"). text (); /// gutes Beispiel nickf.
Kevin Florida
283
@ Kevin, in diesem Fall möchten Sie vielleicht die Antwort unter dieser verwenden. $('#list option:selected').text()
Nickf
6
@nickf und einfacher,$('#list').val()
Derek 28 會 功夫
36
@Derek, val () gibt nicht den Text der Option an, sondern den Wert, der in einigen Fällen (viele wage ich zu sagen) nicht identisch ist.
itsmequinn
Sie sollten immer .trim()nach verwenden, .text()da einige Browser manchmal Leerzeichen vor und nach dem Text hinzufügen, die für den Benutzer unsichtbar sind, aber zu falschen Werten führen können$("#list option[value='2']").text().trim()
Hassan ALAMI
1262

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

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

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

$("#list option:selected").text();
ArtOfWarfare
quelle
11
Um den Wert anstelle des Textes zu erhalten, müssen Sie Folgendes schreiben: - $ ("select # list"). Val (); Ich weiß, dass dies nicht die eigentliche Antwort auf die gestellte Frage ist, dachte aber dennoch daran, diesen Punkt für Neulinge zu erwähnen, die über Google kommen.
Wissensverlangen
Ich verwende $ ("# Listenoption: ausgewählt"). Text () und $ ("# Listenoption: ausgewählt"). Attr ('Wert')
Fullstacklife
Um den ausgewählten Text zu erhalten (obwohl die Frage nicht speziell danach gefragt hat), ist diese Methode überlegen, da der ausgewählte Wert nicht bekannt sein muss.
TheJerm
132

Dies funktionierte perfekt für mich. Ich suchte nach einer Möglichkeit, zwei verschiedene Werte mit von MySQL generierten Optionen zu senden. Folgendes ist allgemein und dynamisch:

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

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

Vor ein paar Tagen habe ich festgestellt, dass beim Aktualisieren der jQuery von 1.6 auf 1.9 der Site, auf der ich diesen Code verwendet habe, dies nicht mehr funktioniert ... wahrscheinlich ein Konflikt mit einem anderen Code ... die Lösung bestand darin, die Option aus der zu entfernen find () call:

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

Das war meine Lösung ... benutze sie nur, wenn du nach dem Update deiner jQuery ein Problem hast.

Raphie
quelle
2
angeblich ist dies der effizientere Weg, dies gemäß WebStorm 8 zu tun.
dbinott
2
Diese Antwort ist zwar aufschlussreich und hat mir bei einem Problem geholfen, das ich hatte, aber sie beantwortet die Frage nicht richtig: Bitte beachten Sie, dass hier nicht gefragt wird, wie der ausgewählte
StubbornShowaGuy
109

Basierend auf dem ursprünglichen HTML-Code von Paolo habe ich Folgendes gefunden.

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

Es wurde getestet, um mit Internet Explorer und Firefox zu funktionieren.

Asyadiqin
quelle
11
Eine Alternative dazu ist: $ ("Option: ausgewählt", dies) .text ()
Doug S
Dies ist eine bessere Antwort, da komplexe Szenarien berücksichtigt werden, nicht nur statisches HTML und einfache Javascript-Ereignisse.
oasisfleeting
37
$("#list option:selected").each(function() {
   alert($(this).text());
});  

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

m3ct0n
quelle
37
  1. Wenn auf der Seite nur ein Auswahl-Tag vorhanden ist, können Sie die Auswahl innerhalb der ID-Liste angeben.

    jQuery("select option[value=2]").text();
  2. Um ausgewählten Text zu erhalten

    jQuery("select option:selected").text();
Beena Shetty
quelle
24

Versuche Folgendes:

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

Der Grund, warum Ihr ursprüngliches Snippet nicht funktioniert hat, ist, dass Ihre OPTIONTags Ihrem SELECTTag untergeordnet sind id list.

Andrew Moore
quelle
19

Dies ist eine alte Frage, die seit einiger Zeit nicht mehr aktualisiert wurde. Der richtige Weg, dies jetzt zu tun, wäre die Verwendung

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

Ich hoffe das hilft :-)

mindmyweb
quelle
Dies ist definitiv nicht korrekt. Bitte beachten Sie, dass hier nicht gefragt wird, wie der ausgewählte Textwert ermittelt werden soll
Wesley Smith,
17

Ich wollte das ausgewählte Label bekommen. Dies hat bei mir in jQuery 1.5.1 funktioniert.

$("#list :selected").text();
Dilantha
quelle
17
$(this).children(":selected").text()
Avinash Saini
quelle
Leider funktioniert dies nicht, wenn Sie ein optgroupTag als Kind von Ihnen haben selectund die ausgewählte Option darin enthalten ist optgroup. Verwenden Sie, $("#list option:selected").text();was auch in diesem Fall
funktioniert
13
$("#list [value='2']").text();

Lassen Sie nach dem ID-Selektor ein Leerzeichen.

Mo.
quelle
13

Sie können den ausgewählten Optionstext mithilfe der Funktion abrufen .text();

Sie können die Funktion folgendermaßen aufrufen:

jQuery("select option:selected").text();
Dilipkumar63
quelle
10

Beim "Durchlaufen" dynamisch erstellter Elemente mit .each (function () ...): $("option:selected").text();und$(this + " option:selected").text() gab den ausgewählten Optionstext nicht zurück - stattdessen war er null.

Aber die Lösung von Peter Mortensen hat funktioniert:

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

Ich weiß nicht, warum der übliche Weg in a nicht gelingt .each() (wahrscheinlich mein eigener Fehler), aber danke, Peter. Ich weiß, dass dies nicht die ursprüngliche Frage war, erwähne sie jedoch "für Neulinge, die über Google kommen".

Ich hätte damit begonnen, $('#list option:selected").each()außer dass ich auch Sachen aus dem Auswahlelement holen musste.

Äon
quelle
8

Verwenden:

function selected_state(){
    jQuery("#list option").each(function(){
        if(jQuery(this).val() == "2"){
            jQuery(this).attr("selected","selected");
            return false;
        }
    });
}

jQuery(document).ready(function(){
    selected_state();
});
Mary Daisy Sanchez
quelle
5

Ich suchte nach einem Wert für den internen Feldnamen anstelle der ID und kam von Google zu diesem Beitrag, der mir half, aber nicht die Lösung fand, die ich brauchte, aber ich bekam die Lösung und hier ist sie:

Dies kann also jemandem helfen, nach einem ausgewählten Wert mit einem internen Feldnamen zu suchen, anstatt eine lange ID für SharePoint-Listen zu verwenden:

var e = $('select[title="IntenalFieldName"] option:selected').text(); 
FAA
quelle
Feste Lösung. Tut mir leid, dass es hier unten an einem so geheimen Ort ist. Möglicherweise möchten Sie einen prominenteren Ort finden, um diese Lösung bereitzustellen. Vielleicht könnten Sie eine eigene Frage stellen und beantworten?
Andrew Kozak
4

Ich brauchte diese Antwort, da ich mich mit einem dynamisch gegossenen Objekt befasste, und die anderen Methoden hier schienen nicht zu funktionieren:

element.options[element.selectedIndex].text

Dies verwendet natürlich das DOM- Objekt, anstatt seinen HTML-Code mit nodeValue, childNodes usw. zu analysieren.

Martin Clemens Bloch
quelle
3

Als alternative Lösung können Sie auch einen Kontextteil des jQuery-Selektors verwenden , um <option>Elemente value="2"innerhalb der Dropdown-Liste zu finden:

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

Ich wollte eine dynamische Version für Select Multiple, die anzeigt, was rechts ausgewählt ist (ich wünschte, ich hätte weiter gelesen und gesehen $(this).find... früher):

<script type="text/javascript">
    $(document).ready(function(){
        $("select[showChoices]").each(function(){
            $(this).after("<span id='spn"+$(this).attr('id')+"' style='border:1px solid black;width:100px;float:left;white-space:nowrap;'>&nbsp;</span>");
            doShowSelected($(this).attr('id'));//shows initial selections
        }).change(function(){
            doShowSelected($(this).attr('id'));//as user makes new selections
        });
    });
    function doShowSelected(inId){
        var aryVals=$("#"+inId).val();
        var selText="";
        for(var i=0; i<aryVals.length; i++){
            var o="#"+inId+" option[value='"+aryVals[i]+"']";
            selText+=$(o).text()+"<br>";
        }
        $("#spn"+inId).html(selText);
    }
</script>
<select style="float:left;" multiple="true" id="mySelect" name="mySelect" showChoices="true">
    <option selected="selected" value=1>opt 1</option>
    <option selected="selected" value=2>opt 2</option>
    <option value=3>opt 3</option>
    <option value=4>opt 4</option>
</select>
Gordon
quelle
2

Sie haben eine der folgenden Möglichkeiten

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

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

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

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

$(function(){    
    
    console.log($("#list").find('option').filter('[value=2]').text());
    console.log($("#list").find('option[value=2]').text());
    console.log($("#list").children('option[value=2]').text());
    console.log($("#list option[value='2']").text());
    
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

Anfath Hifans
quelle