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 $selectjest obiektem jQuery wskazującym na pożądany <select>znacznik, np. Przez:
var $select = $('.selDiv .opts');
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/
$select.val("SEL2");
Wersja Settera .val()jest zaimplementowana w selecttagach poprzez ustawienie selectedwłaściwości dopasowania optionz tym samym value, 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(nie attr) booleanparametru (zamiast wartości tekstowej selected):
np. https://jsfiddle.net/yz7tu49b/
$option.prop('selected', true); // Will add selected="selected" to the tag
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ót null.
Tak więc dla pokazanego przykładu i ze względu na solidność możesz użyć czegoś takiego : https://jsfiddle.net/1250Ldqn/ :
var $select = $('.selDiv .opts');
$select.val("SEL2");
if ($select.val() == null) {
$select.val("DEFAULT");
}
Uwaga 4 - dokładne dopasowanie tekstu:
Jeśli chcesz dopasować według dokładnego tekstu, możesz użyć filterfunkcji with. np. https://jsfiddle.net/yz7tu49b/2/ :
var $select = $('.selDiv .opts');
$select.children().filter(function(){
return this.text == "Selection 2";
}).prop('selected', true);
chociaż jeśli możesz mieć dodatkowe białe znaki, możesz dodać wykończenie do czeku jak w
return $.trim(this.text) == "some value to match";
Uwaga 5 - dopasowanie według indeksu
Jeśli chcesz dopasować według indeksu, po prostu zindeksuj dzieci wybranych, np. Https://jsfiddle.net/yz7tu49b/3/
var $select = $('.selDiv .opts');
var index = 2;
$select.children()[index].selected = true;
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/ :
var $select = $('.selDiv .opts');
var index = 2;
$select.children().eq(index).prop('selected', true);
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()jQuery select. np. pierwszym najprostszym przykładem jest https://jsfiddle.net/yz7tu49b/7/
var $select = $('.selDiv .opts');
$select.val("SEL2").change();
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.
$("#my_select").val("the_new_value").change();... ... od so