Muszę sprawdzić, czy <select>
ma opcję, której tekst jest równy określonej wartości.
Na przykład, jeśli istnieje <option value="123">abc</option>
, szukałbym „abc”.
Czy można to zrobić za pomocą selektora?
Szukam czegoś podobnego do $('#select option[value="123"]');
tekstu.
has
w SLaks jest przydatna, ale punkt w odpowiedzi Floyds jest również dobry ... Nie wiem, co zaakceptować.Odpowiedzi:
To może pomóc:
Demo skrzypce
Dałoby to opcję z tekstem,
B
a nie te, które zawierają tekst, który zawieraB
. Mam nadzieję że to pomożeW przypadku najnowszych wersji jQuery powyższe nie działa. Jak skomentował Quandary poniżej, to działa dla jQuery 1.9.1:
Zaktualizowano skrzypce
źródło
Możesz użyć
:contains()
selektora, aby wybrać elementy zawierające określony tekst.Na przykład:
Aby sprawdzić, czy dany
<select>
element ma taką opcję, użyj.has()
metody :Aby znaleźć wszystkie,
<select>
które zawierają taką opcję, użyj:has()
selektora :źródło
:contains
nie jest teraz ostateczny, prawda?123abcdef
?Żadna z poprzednich sugestii nie działała dla mnie w jQuery 1.7.2, ponieważ próbuję ustawić wybrany indeks listy na podstawie wartości z pola tekstowego, a niektóre wartości tekstowe są zawarte w wielu opcjach. Skończyło się na tym, że:
źródło
contains
całkowite pominięcie może faktycznie przyspieszyć.$(this).parent().val($(this).val());
Prawdopodobnie możesz zrobić oba, ale dla mnie ustawieniem był tylko rodzicval()
.Napotkałem ten sam problem poniżej to działający kod:
Demo: http://jsfiddle.net/YRBrp/83/
źródło
To działało dla mnie:
$("#test").find("option:contains('abc')");
źródło
$("#testselect").find("option:contains('option-text')").attr('value');
w ten sposób możesz użyć zdarzenia, takiego jak.click()
zmiana ustawienia.To najlepsza metoda zaznaczania tekstu na liście rozwijanej.
źródło
this is your selected text plus more
.Próbowałem kilku z tych rzeczy, dopóki nie dostałem jednego do pracy zarówno w Firefoksie, jak i IE. Właśnie to wymyśliłem.
inny sposób na napisanie go w bardziej czytelnej wersji:
Pseudo kod:
źródło
"#my-Select" + " option"
? Dlaczego nie tylko"#my-Select option"
?Użyj następujących
źródło
Działa to w jQuery 1.6 (uwaga dwukropek przed nawiasem otwierającym), ale nie działa w nowszych wersjach (w tym czasie 1.10).
źródło
$("#mySelect option").filter(function() { return this.text == "abc"; });
będzie działać z najnowszymi wersjami jQuery .. Lub prawdopodobnie w inny sposób, który wolisz używać ..Dla jquery wersja 1.10.2 poniżej działała dla mnie
źródło
To praca dla mnie
źródło
To działa dla mnie:
result
Zmienna zwróci indeks dopasowane wartości tekstowej. Teraz ustawię go za pomocą jego indeksu:źródło
Albo iteruj opcje, albo umieść ten sam tekst w innym atrybucie opcji i wybierz z tym.
źródło
To też zadziała.
$ („# test”). find („wybierz opcję: zawiera („ B ”)”). filter („: selected”);
źródło
ABC
.Jak opisano w tej odpowiedzi , możesz łatwo utworzyć własny selektor dla hasText. Pozwala to znaleźć opcję za pomocą
$('#test').find('option:hastText("B")').val();
Oto dodana przeze mnie metoda hasText:
źródło
To działa dla mnie
Dzięki za wszystkie posty.
źródło