JQuery получить конкретный текст тега опции - PullRequest
1189 голосов
/ 13 октября 2008

Хорошо, скажите, у меня есть это:

<select id='list'>
    <option value='1'>Option A</option>
    <option value='2'>Option B</option>
    <option value='3'>Option C</option>
</select>

Как бы выглядел селектор, если бы я хотел получить «Вариант B», когда у меня есть значение «2»?

Обратите внимание, что здесь спрашивается не о том, как получить текстовое значение selected , а о любом из них, независимо от того, выбрано оно или нет, в зависимости от атрибута value. Я попробовал:

$("#list[value='2']").text();

Но это не работает.

Ответы [ 21 ]

1254 голосов
/ 15 мая 2009

Если вы хотите получить опцию со значением 2, используйте

$("#list option[value='2']").text();

Если вы хотите получить любую выбранную опцию, используйте

$("#list option:selected").text();
1092 голосов
/ 13 октября 2008

Он ищет элемент с идентификатором list, который имеет свойство value, равное 2. То, что вы хотите, это option дочерний элемент list.

$("#list option[value='2']").text()
124 голосов
/ 29 июля 2011

Это отлично сработало для меня, я искал способ отправить два разных значения с параметрами, сгенерированными MySQL, и следующее является универсальным и динамическим:

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

Как уже упоминалось в одном из комментариев. Благодаря этому я смог создать динамическую функцию, которая будет работать со всеми моими полями выбора, для которых я хочу получить оба значения, значение параметра и текст.

Несколько дней назад я заметил, что при обновлении jQuery с 1.6 до 1.9 сайта я использовал этот код, это перестало работать ... вероятно, был конфликт с другим фрагментом кода ... в любом случае, решение было удалить опция вызова find ():

$(this).find(":selected").text();

Это было мое решение ... используйте его, только если у вас возникли проблемы после обновления вашего jQuery.

107 голосов
/ 02 мая 2011

Исходя из оригинального HTML-кода, опубликованного Paolo, я нашел следующее.

$("#list").change(function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Он был протестирован для работы в Internet Explorer и Firefox.

36 голосов
/ 13 июня 2012
  1. Если на странице есть только один тег select, вы можете указать select внутри id 'list'

    jQuery("select option[value=2]").text();
    
  2. Чтобы получить выделенный текст

    jQuery("select option:selected").text();
    
36 голосов
/ 04 июня 2010
$("#list option:selected").each(function() {
   alert($(this).text());
});  

для нескольких выбранных значений в элементе #list.

23 голосов
/ 13 октября 2008

Попробуйте следующее:

$("#list option[value=2]").text();

Причина, по которой ваш оригинальный фрагмент не работал, заключается в том, что ваши теги OPTION являются дочерними по отношению к тегу SELECT, который имеет id list.

19 голосов
/ 03 июля 2014

Это старый Вопрос, который некоторое время не обновлялся. Правильный способ сделать это сейчас - использовать

$("#action").on('change',function() {
    alert($(this).find("option:selected").text()+' clicked!');
});

Надеюсь, это поможет: -)

17 голосов
/ 03 апреля 2013
$(this).children(":selected").text()
16 голосов
/ 01 марта 2011

Я хотел получить выбранный ярлык. Это сработало для меня в jQuery 1.5.1.

$("#list :selected").text();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...