Існує декілька способів зробити це, але найбільш чіткий підхід був загублений серед найкращих відповідей та безлічі аргументів 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