Jeśli znasz indeks, wartość lub tekst. także jeśli nie masz identyfikatora do bezpośredniego odniesienia.
To , to i to są pomocne odpowiedzi.
Przykładowy znacznik
<div class="selDiv">
<select class="opts">
<option selected value="DEFAULT">Default</option>
<option value="SEL1">Selection 1</option>
<option value="SEL2">Selection 2</option>
</select>
</div>
$("#my_select").val("the_new_value").change();
... ... od soOdpowiedzi:
Selektor, aby uzyskać środkowy element opcji według wartości, to
W przypadku indeksu:
W przypadku znanego tekstu:
EDYCJA : Jak skomentowano powyżej PO mógł być po zmianie wybranego elementu menu rozwijanego. W wersji 1.6 i wyższej zalecana jest metoda prop ():
W starszych wersjach:
EDYCJA 2 : po komentarzu Ryana. Dopasowanie „Selection 10” może być niepożądane. Nie znalazłem selektora pasującego do pełnego tekstu, ale działa filtr :
EDYCJA 3 : Zachowaj ostrożność,
$(e).text()
ponieważ może zawierać nowy wiersz, co spowoduje, że porównanie się nie powiedzie. Dzieje się tak, gdy opcje są niejawnie zamknięte (bez</option>
znacznika):Jeśli po prostu użyjesz
e.text
dodatkowych białych znaków, takich jak końcowy znak nowej linii, zostanie usunięty, dzięki czemu porównanie będzie bardziej niezawodne.źródło
Żadna z powyższych metod nie zapewniła rozwiązania, którego potrzebowałem, więc pomyślałem, że dostarczę to, co zadziałało dla mnie.
źródło
prop
a nieattr
..attr
jest poprawne. „selected” jest atrybutem <option> w3.org/TR/html5/forms.html#attr-option-selectedprop
przedattr
. To oszczędza konieczności sprawdzania każdej właściwości na w3.org, aby sprawdzić, czy jest to tylko atrybut, czy też implementacja z działaniami wspierającymi.Możesz po prostu użyć
val()
metody:źródło
the_value
. .val nie jest funkcją wyboru / filtra! Jest to moduł dostępu do właściwości, a przekazanie go przez ten ciąg ustawia wartość. Próbowałem wycofać swoje poparcie, ale spóźniłem się po tym, jak uświadomiłem to sobie w testach.Pod względem wartości, co działało dla mnie z jQuery 1.7, był poniższy kod, spróbuj tego:
źródło
.change()
było konieczne. Miałem przykład, w którym zmieniałem miniatury w oparciu o WYBÓR. Kiedy przesłałem niestandardowy motyw, miał on wybrać „Motyw niestandardowy” z listy opcji..prop()
Wywołanie działało, ale bez.change()
obraz miniatur po prawej moja wybierz nigdy aktualizowana.prop
wartość logiczna generuje to samo wyjście. np..prop('selected', true)
Można to zrobić na wiele sposobów, ale najczystsze podejście zaginęło wśród najlepszych odpowiedzi i mnóstwa argumentów
val()
. Zmieniono także niektóre metody od wersji jQuery 1.6, więc wymaga to aktualizacji.W poniższych przykładach założę, że zmienna
$select
jest obiektem jQuery wskazującym na pożądany<select>
znacznik, np. Przez:Uwaga 1 - użyj val () dla dopasowań wartości:
W przypadku dopasowywania wartości użycie
val()
jest znacznie prostsze niż użycie selektora atrybutów: https://jsfiddle.net/yz7tu49b/6/Wersja Settera
.val()
jest zaimplementowana wselect
tagach poprzez ustawienieselected
właściwości dopasowaniaoption
z tym samymvalue
, więc działa dobrze we wszystkich nowoczesnych przeglądarkach.Uwaga 2 - użyj prop („wybrane”, prawda):
Jeśli chcesz bezpośrednio ustawić wybrany stan opcji, możesz użyć
prop
(nieattr
)boolean
parametru (zamiast wartości tekstowejselected
):np. https://jsfiddle.net/yz7tu49b/
Uwaga 3 - zezwól na nieznane wartości:
Jeśli użyjesz,
val()
aby wybrać<option>
, ale wartość val nie jest dopasowana (może się zdarzyć w zależności od źródła wartości), wówczas „nic” zostanie wybrane i$select.val()
nastąpi powrótnull
.Tak więc dla pokazanego przykładu i ze względu na solidność możesz użyć czegoś takiego : https://jsfiddle.net/1250Ldqn/ :
Uwaga 4 - dokładne dopasowanie tekstu:
Jeśli chcesz dopasować według dokładnego tekstu, możesz użyć
filter
funkcji with. np. https://jsfiddle.net/yz7tu49b/2/ :chociaż jeśli możesz mieć dodatkowe białe znaki, możesz dodać wykończenie do czeku jak w
Uwaga 5 - dopasowanie według indeksu
Jeśli chcesz dopasować według indeksu, po prostu zindeksuj dzieci wybranych, np. Https://jsfiddle.net/yz7tu49b/3/
Chociaż obecnie staram się unikać bezpośrednich właściwości DOM na rzecz jQuery, do kodu przyszłościowego, więc można to również zrobić jako https://jsfiddle.net/yz7tu49b/5/ :
Uwaga 6 - użyj zmiany (), aby uruchomić nowy wybór
We wszystkich powyższych przypadkach zdarzenie zmiany nie jest uruchamiane. Jest to zaprojektowane tak, abyś nie kończył się rekurencyjnymi zmianami.
Aby w razie potrzeby wygenerować zdarzenie zmiany, po prostu dodaj wywołanie do obiektu
.change()
jQueryselect
. np. pierwszym najprostszym przykładem jest https://jsfiddle.net/yz7tu49b/7/Istnieje również wiele innych sposobów na znalezienie elementów za pomocą selektorów atrybutów, takich jak
[value="SEL2"]
, ale musisz pamiętać, że selektory atrybutów są stosunkowo wolne w porównaniu do wszystkich innych opcji.źródło
Możesz nazwać zaznaczenie i użyć tego:
Powinien wybrać żądaną opcję.
źródło
źródło
Odpowiadając na moje pytanie dotyczące dokumentacji. Jestem pewien, że istnieją inne sposoby na osiągnięcie tego, ale to działa i ten kod jest testowany.
źródło
Dokładnie to zadziała, wypróbuj poniższe metody
źródło
Korzystając z jquery-2.1.4 , znalazłem dla siebie następującą odpowiedź:
Jeśli masz wartość ciągu, spróbuj wykonać następujące czynności:
Inne przykłady nie działały dla mnie, dlatego dodam tę odpowiedź.
Oryginalną odpowiedź znalazłem na: https://forum.jquery.com/topic/how-to-dynamically-select-option-in-dropdown-menu
źródło
Aby ustawić wartość wyboru z wybranym wyzwalaniem:
Aby ustawić opcję z zakresu:
W tym kodzie użyj selektora, aby znaleźć obiekt wyboru z warunkiem, a następnie zmień wybrany atrybut za pomocą
attr()
.Następnie polecam dodać
change()
zdarzenie po ustawieniu atrybutuselected
, po wykonaniu tej czynności kod dobiegnie do zmiany wyboru przez użytkownika.źródło
Korzystam z tego, gdy znam indeks listy.
Umożliwia to zmianę listy i uruchomienie zdarzenia zmiany. „: Nth (n)” liczy się od indeksu 0
źródło
pójdę z: -
źródło
Spróbuj tego
po prostu używasz select id pola zamiast # id (tj. # select_name)
zamiast wartości opcji użyj wartości opcji wyboru
źródło
Dla Jquery wybrano, jeśli wyślesz atrybut do funkcji i musisz zaktualizować opcję select
źródło
źródło
$('select').val('the_value');
Wygląda właściwe rozwiązanie, a jeśli masz wiersze tabeli danych, wówczas:źródło
jeśli nie chcesz używać jQuery, możesz użyć poniższego kodu:
źródło
Dzięki za pytanie. Mam nadzieję, że ten fragment kodu zadziała dla Ciebie.
źródło
lub
źródło