Как получить индекс выбора тега выбора - PullRequest
18 голосов
/ 30 ноября 2009
<select id="sel">
<option value="123" selected="selected">text1</option>
<option value="44">text2</option>
<option value="882">text3</option>
...
</select>

Как получить индекс выбранной опции с помощью jQuery? Может быть .index(subject), но все проверенные возможности не сработали ...

P.S. Индексы: значение = "123" => 0, значение = "44" => 1, ...

Thanx

Ответы [ 8 ]

17 голосов
/ 17 июля 2012

Только второй ответ Боба верен:

$("#sel")[0].selectedIndex

Работает: http://jsfiddle.net/b9chris/wxeVN/1/

Использование .attr() работает только в том случае, если пользователь (или восстановление DOM браузера) не изменил параметр, выбранный после загрузки страницы: http://jsfiddle.net/b9chris/wxeVN/

Вы можете реализовать это как расширение jQuery и получить немного больше информации в процессе:

(function($) {
    $.fn.selectedOption = function() {
        var sel = this[0];
        return sel.options[sel.selectedIndex];
    };
})(jQuery)

$('button').click(function() {
    $('#output').text('selected index: ' + $('select').selectedOption().index);
});

http://jsfiddle.net/b9chris/wxeVN/102/

То, что возвращает .selectedOption(), является фактическим тегом параметра, поэтому вы можете получить доступ к .index, .value и .text - немного удобнее, чем просто индекс при обычном использовании.

10 голосов
/ 30 января 2014

Когда я пишу это, два главных ответа (включая принятый ответ) неверны, несмотря на то, что на них указывалось почти пять лет назад. attr("selectedIndex") ничего не делает, потому что selectedIndex - это свойство фактического элемента DOM, а не атрибута HTML. Вам нужно использовать prop:

$(this).prop('selectedIndex')

Интерактивная демонстрация, сравнивающая это с неверной версией: http://jsfiddle.net/uvwkD/

5 голосов
/ 30 ноября 2009
$("#sel").attr("selectedIndex")

или

$("#sel")[0] //to get the DOM element
$("#sel")[0].selectedIndex
3 голосов
/ 30 ноября 2009

Это сделает это:

   $("#sel").attr("selectedIndex")
2 голосов
/ 30 ноября 2009

В этом случае вы можете получить индекс элемента, проверив, сколько родственных элементов у выбранного элемента перед ним:

$('#sel option:selected').prevAll().length;
2 голосов
/ 30 ноября 2009

Вы можете сделать это без jQuery: var sel = document.getElementById( 'sel' ); var index = sel.selectedIndex;

1 голос
/ 24 июня 2014

Используйте стандартную индексную функцию jquery, как в этом примере кода

$("#sel option:selected").index()

0 голосов
/ 27 июля 2017

Название не совсем соответствует вопросу ...

Как получить индекс выбора-> тег опции

option.index // javascript

$(option).prop('index') // jquery

индекс выбран выберите-> тег параметра:

document.getElementById('sel').selectedIndex // javascript
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...