JQuery устанавливает выбранный атрибут в списке выбора
У меня есть следующий html
<select id="dropdown">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
У меня есть строка "B", поэтому я хочу установить на нее выбранную attrribute, чтобы она была:
<select id="dropdown">
<option>A</option>
<option selected="selected">B</option>
<option>C</option>
</select>
Как я могу сделать это в JQuery?
Ответы
Ответ 1
Если вы не возражаете изменить свой HTML-код, чтобы добавить атрибут value
параметров, вы можете значительно уменьшить код, необходимый для этого:
<option>B</option>
к
<option value="B">B</option>
Это будет полезно, если вы хотите сделать что-то вроде:
<option value="IL">Illinois</option>
При этом следующий jQuery произведет изменение:
$("select option[value='B']").attr("selected","selected");
Если вы решите не включать использование атрибута value
, вам потребуется выполнить цикл по каждой опции и вручную проверить его значение:
$("select option").each(function(){
if ($(this).text() == "B")
$(this).attr("selected","selected");
});
Ответ 2
<select id="cars">
<option value='volvo'>volvo</option>
<option value='bmw'>bmw</option>
<option value='fiat'>fiat</option>
</select>
var make = "fiat";
$("#cars option[value='" + make + "']").attr("selected","selected");
Ответ 3
Если вы используете JQuery, с 1.6 вам нужно использовать метод .prop():
$('select option:nth(1)').prop("selected","selected");
Ответ 4
Я бы перебирал параметры, сравнивая текст с тем, что я хочу выбрать, а затем задал выбранный атрибут для этого параметра. Как только вы найдете правильный, завершите итерацию (если у вас нет мультиселектора).
$('#dropdown').find('option').each( function() {
var $this = $(this);
if ($this.text() == 'B') {
$this.attr('selected','selected');
return false;
}
});
Ответ 5
Вы можете следовать стратегии .selectedIndex danielrmt, но определить индекс на основе текста в тегах параметров, как это:
$('#dropdown')[0].selectedIndex = $('#dropdown option').toArray().map(jQuery.text).indexOf('B');
Это работает с исходным HTML без использования атрибутов value.
Ответ 6
Вы можете использовать чистый DOM. См. http://www.w3schools.com/htmldom/prop_select_selectedindex.asp
document.getElementById('dropdown').selectedIndex = 1;
но jQuery может помочь:
$('#dropdown').selectedIndex = 1;
Ответ 7
код:
var select = function(dropdown, selectedValue) {
var options = $(dropdown).find("option");
var matches = $.grep(options,
function(n) { return $(n).text() == selectedValue; });
$(matches).attr("selected", "selected");
};
Пример:
select("#dropdown", "B");
Ответ 8
$('#select_id option:eq(0)').prop('selected', 'selected');
его хороший
Ответ 9
Это может быть решение
$(document).on('change', 'select', function () {
var value = $(this).val();
$(this).find('option[value="' + value + '"]').attr("selected", "selected");
})
Ответ 10
Что-то вдоль линий...
$('select option:nth(1)').attr("selected","selected");