71

Вопрос по jquery, javascript – Как получить $ (этот) выбранный вариант в jQuery?

Следующий код работает:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

Как выполнить рефакторинг второй строки:

var cur_value = $(this).***option-selected***.text();

Что вы используете для***option-selected***?

  • Это была опечатка, когда я отправил. Исправил ответ.

    от
  • find('option:selected') возвращает пустую строку для меня. Какая версия jQuery требуется? Я работаю в 1.6.1.children('option:selected') работает.

    от B Seven
  • Где вы получаетеoption-selected без кавычек ...?

    от
  • option:selected был там с версии 1.0api.jquery.com/selected-selector

    от
  • Да, но что вы имеете в виду это:api.jquery.com/context   $ (& quot; ul & quot ;, document.body) .context.nodeName, который я не использую

    от
  • Возможно, вы действительно имели в виду var cur_value = $ (this) .children («опция: выбранная»). Text ();

    от
  • Не используйте.context, это устарело, так как jQuery 1.10 -api.jquery.com/category/deprecated/deprecated-1.10

    от
  • Мне нравится ответ, но почему он лучше?

    от
  • вариант минус выбран?

    от
  • Опубликовано в ту же минуту!

    от
  • Тот же ответ, что и выше

    от
  • Это отлично сработало для меня - я пытался$("option:selected", this) как упомянуто выше, но это было проблематично. Я использовал нажатие кнопки, чтобы добавить выбранный текст элемента опции в другой элемент div, но когда я нажал кнопку, он фактически изменил выбранный элемент ... странно. Используйте это.

    от
  • Хотя это может теоретически ответить на вопрос,it would be preferable включить основные части ответа здесь и предоставить ссылку для справки.

    от
8 ответов
  • 85

    Code:

     $(this).find('option:selected').text();
    

  • 28

    Code:

    var cur_value = $('option:selected',this).text();
    

  • 10

    Это должно работать: $(this).find('option:selected').text();

    Это должно работать:

    $(this).find('option:selected').text();
    

  • 104

    Для выбранного значения:

    $(this).val()

    Если вам нужен выбранный элемент option,$("option:selected", this)

  • 7

    поскольку var cur_value = $(this).children('option:selected').text();

    var cur_value = $(this).find('option:selected').text();
    

    посколькуoption скорее всего, будет непосредственным ребенкомselect Вы также можете использовать:

    var cur_value = $(this).children('option:selected').text();
    

    http://api.jquery.com/find/

  • 8

    Ты можешь использовать

    find искать выбранную опцию, которая является потомком узла (ов), на который указывает текущий объект jQuery:

    var cur_value = $(this).find('option:selected').,text();
    

    Так как это, вероятно, непосредственный ребенок, я бы на самом деле предложил использовать.children вместо:

    var cur_value = $(this).children('option:selected').text();
    

  • 0

    Лучшая догадка:

    var cur_value = $('#select-id').children('option:selected').text();
    

    Мне больше нравятся дети в этом случае, потому что вы знаете, что вы идете только одной веткой вниз по дереву DOM ...

  • 42

    На мой взгляд

    лучший и кратчайший путь для событий onchange в раскрывающемся списке, чтобы получить выбранный вариант:

    $('option:selected',this);
    

    чтобы получить атрибут значения:

    $('option:selected',this).attr('value');
    

    чтобы получить показанную часть между тегами:

    $('option:selected',this).text();
    

    В вашем образце:

    $("#select-id").change(function(){
      var cur_value = $('option:selected',this).text();
    });