Как получить индекс тега select-> option

<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. Индексы: value = "123" = > 0, value = "44" = > 1,...

Thanx

Ответ 1

Это будет сделано:

   $("#sel").attr("selectedIndex")

Ответ 2

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

$("#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 - немного более удобно, чем просто индекс в типичном использовании.

Ответ 3

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

$(this).prop('selectedIndex')

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

Ответ 4

$("#sel").attr("selectedIndex")

или

$("#sel")[0] //to get the DOM element
$("#sel")[0].selectedIndex

Ответ 5

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

Ответ 6

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

$('#sel option:selected').prevAll().length;

Ответ 7

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

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

Ответ 8

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

Как получить индекс тега select- >

option.index // javascript

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

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

document.getElementById('sel').selectedIndex // javascript