Подтвердить что ты не робот

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?

4b9b3361

Ответ 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.

Ответ 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");