Існує декілька способів зробити це, але найбільш чіткий підхід був загублений серед найкращих відповідей та безлічі аргументів val()
. Також змінилися деякі методи, починаючи з jQuery 1.6, тому для цього потрібне оновлення.
Для наступних прикладів я припускаю, що змінна $select
є об'єктом jQuery, що вказує на потрібний <select>
тег, наприклад, за допомогою наступного:
var $select = $('.selDiv .opts');
Примітка 1 - використовуйте val () для відповідності значень:
Для відповідності значення використання val()
набагато простіше, ніж використання селектора атрибутів: https://jsfiddle.net/yz7tu49b/6/
$select.val("SEL2");
Версія програми set .val()
реалізована на select
тегах, встановлюючи selected
властивість збігання option
з однаковими value
, тому добре працює у всіх сучасних браузерах.
Примітка 2 - використовуйте опору ("вибрано", правда):
Якщо ви хочете встановити вибраний стан параметра безпосередньо, ви можете використовувати prop
(не attr
) boolean
параметр (а не текстове значення selected
):
наприклад https://jsfiddle.net/yz7tu49b/
$option.prop('selected', true); // Will add selected="selected" to the tag
Примітка 3 - дозволяють невідомі значення:
Якщо ви val()
вибираєте <option>
, але значення val не збігається (може статися залежно від джерела значень), вибирається "нічого" і $select.val()
повертається null
.
Отже, для наведеного прикладу та для надійності ви можете використовувати щось подібне https://jsfiddle.net/1250Ldqn/ :
var $select = $('.selDiv .opts');
$select.val("SEL2");
if ($select.val() == null) {
$select.val("DEFAULT");
}
Примітка 4 - точна відповідність тексту:
Якщо ви хочете відповідати точним текстом, ви можете використовувати filter
функцію з. наприклад https://jsfiddle.net/yz7tu49b/2/ :
var $select = $('.selDiv .opts');
$select.children().filter(function(){
return this.text == "Selection 2";
}).prop('selected', true);
хоча якщо у вас є додатковий пробіл, можливо, ви захочете додати обробку до чека, як в
return $.trim(this.text) == "some value to match";
Примітка 5 - відповідність за індексом
Якщо ви хочете співставити за індексом, просто індексуйте дітей, що вибираються, наприклад https://jsfiddle.net/yz7tu49b/3/
var $select = $('.selDiv .opts');
var index = 2;
$select.children()[index].selected = true;
Хоча в даний час я схильний уникати прямих властивостей DOM на користь jQuery, коду, що підтверджує майбутнє, так що це також можна зробити як https://jsfiddle.net/yz7tu49b/5/ :
var $select = $('.selDiv .opts');
var index = 2;
$select.children().eq(index).prop('selected', true);
Примітка 6 - використовуйте change () для запуску нового вибору
У всіх вищезазначених випадках подія зміни не спрацьовує. Це задумано так, щоб ви не закінчувались рекурсивними змінами.
Щоб створити подію зміни, якщо потрібно, просто додайте виклик до об'єкта .change()
jQuery select
. наприклад, найпершим найпростішим прикладом стає https://jsfiddle.net/yz7tu49b/7/
var $select = $('.selDiv .opts');
$select.val("SEL2").change();
Існує також безліч інших способів пошуку елементів за допомогою селекторів атрибутів, наприклад [value="SEL2"]
, але ви повинні пам’ятати, що селектори атрибутів відносно повільні порівняно з усіма цими іншими параметрами.
$("#my_select").val("the_new_value").change();
... ... from so