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

71

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

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

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

<code>var cur_value = $(this).***option-selected***.text();
</code>

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

Ваш Ответ

8   ответов
7
var cur_value = $(this).find('option:selected').text();

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

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

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

вариант минус выбран?
find('option:selected') возвращает пустую строку для меня. Какая версия jQuery требуется? Я работаю в 1.6.1.children('option:selected') работает. B Seven
Где вы получаетеoption-selected без кавычек ...?
option:selected был там с версии 1.0api.jquery.com/selected-selector
Это была опечатка, когда я отправил. Исправил ответ.
104

$(this).val()

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

0

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

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

Возможно, вы действительно имели в виду var cur_value = $ (this) .children («опция: выбранная»). Text ();
85
 $(this).find('option:selected').text();
Это отлично сработало для меня - я пытался$("option:selected", this) как упомянуто выше, но это было проблематично. Я использовал нажатие кнопки, чтобы добавить выбранный текст элемента опции в другой элемент div, но когда я нажал кнопку, он фактически изменил выбранный элемент ... странно. Используйте это.
10

$(this).find('option:selected').text();
Тот же ответ, что и выше
Опубликовано в ту же минуту!
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();
});
Да, но что вы имеете в виду это:api.jquery.com/context   $ (& quot; ul & quot ;, document.body) .context.nodeName, который я не использую
Мне нравится ответ, но почему он лучше?
Не используйте.context, это устарело, так как jQuery 1.10 -api.jquery.com/category/deprecated/deprecated-1.10
8

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

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

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

var cur_value = $(this).children('option:selected').text();
28
var cur_value = $('option:selected',this).text();
Хотя это может теоретически ответить на вопрос,it would be preferable включить основные части ответа здесь и предоставить ссылку для справки.

Похожие вопросы