Ich muss überprüfen, ob a <select>
eine Option hat, deren Text einem bestimmten Wert entspricht.
Wenn es zum Beispiel eine gibt <option value="123">abc</option>
, würde ich nach "abc" suchen.
Gibt es einen Selektor, um dies zu tun?
Ich suche etwas Ähnliches, $('#select option[value="123"]');
aber für den Text.
has
Antwort in SLaks ist nützlich, aber der Punkt in Floyds Antwort ist auch gut ... Ich weiß nicht, was ich akzeptieren soll.Antworten:
Dies könnte helfen:
Demo Geige
Dies würde Ihnen die Option mit Text geben
B
und nicht diejenigen, die Text enthaltenB
. Hoffe das hilftFür neuere Versionen von jQuery funktioniert das oben Gesagte nicht. Wie von Quandary unten kommentiert , funktioniert dies für jQuery 1.9.1:
Geige aktualisiert
quelle
Sie können die Verwendung
:contains()
Selektor Elemente auszuwählen , die einen bestimmten Text enthalten.Beispielsweise:
<select>
Verwenden Sie die folgende.has()
Methode , um zu überprüfen, ob ein bestimmtes Element über eine solche Option verfügt :<select>
Verwenden Sie den:has()
Selektor, um alle s zu finden , die eine solche Option enthalten :quelle
:contains
ist jetzt nicht endgültig, oder?123abcdef
?Keiner der vorherigen Vorschläge hat in jQuery 1.7.2 für mich funktioniert, da ich versuche, den ausgewählten Index der Liste basierend auf dem Wert aus einem Textfeld festzulegen, und einige Textwerte in mehreren Optionen enthalten sind. Am Ende habe ich Folgendes verwendet:
quelle
contains
insgesamt die Dinge tatsächlich beschleunigen kann.$(this).parent().val($(this).val());
Sie könnten wahrscheinlich beides tun, aber für mich hat nur das Festlegen des übergeordnetenval()
Elements den Trick getan.Ich hatte das gleiche Problem wie der Arbeitscode:
Demo: http://jsfiddle.net/YRBrp/83/
quelle
Das hat bei mir funktioniert:
$("#test").find("option:contains('abc')");
quelle
$("#testselect").find("option:contains('option-text')").attr('value');
Auf diese Weise können Sie ein Ereignis verwenden.click()
, um eine Einstellung zu ändern.Dies ist die beste Methode zum Auswählen von Text in der Dropdown-Liste.
quelle
this is your selected text plus more
.Ich habe einige dieser Dinge ausprobiert, bis ich eines bekam, das sowohl in Firefox als auch im IE funktioniert. Das habe ich mir ausgedacht.
eine andere Art, es lesbarer zu schreiben:
Pseudocode:
quelle
"#my-Select" + " option"
? Warum nicht einfach"#my-Select option"
?Verwenden Sie Folgendes
quelle
Dies funktioniert in jQuery 1.6 (Doppelpunkt vor der öffnenden Klammer beachten), schlägt jedoch bei den neueren Versionen (zu diesem Zeitpunkt 1.10) fehl.
quelle
$("#mySelect option").filter(function() { return this.text == "abc"; });
mit den neuesten Versionen von jQuery funktioniert. Oder wahrscheinlich auf eine andere Art und Weise, die Sie bevorzugen.Für jquery hat Version 1.10.2 unten für mich funktioniert
quelle
Diese Arbeit für mich
quelle
Das funktioniert bei mir:
Die
result
Variable gibt den Index des übereinstimmenden Textwerts zurück. Jetzt werde ich es einfach mit seinem Index einstellen:quelle
Entweder durchlaufen Sie die Optionen oder Sie fügen denselben Text in ein anderes Attribut der Option ein und wählen damit aus.
quelle
Dies wird auch funktionieren.
$ ('# test'). find ("Auswahloption: enthält ('B')"). filter (": selected");
quelle
ABC
.Wie in dieser Antwort beschrieben , können Sie ganz einfach Ihren eigenen Selektor für hasText erstellen. Auf diese Weise können Sie die Option mit finden
$('#test').find('option:hastText("B")').val();
Hier ist die hasText-Methode, die ich hinzugefügt habe:
quelle
Das funktioniert bei mir
Danke für alle Beiträge.
quelle