Ответ 1
Это будет сделано:
$("#sel").attr("selectedIndex")
<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
Это будет сделано:
$("#sel").attr("selectedIndex")
Только второй ответ Боба правильный:
$("#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
- немного более удобно, чем просто индекс в типичном использовании.
Как я пишу это, два верхних ответа (включая принятый ответ) неверны, несмотря на то, что они указаны почти пять лет назад. attr("selectedIndex")
ничего не делает, потому что selectedIndex
является свойством для фактического элемента DOM, а не атрибутом HTML. Вам нужно использовать prop
:
$(this).prop('selectedIndex')
Интерактивная демонстрация, сравнивающая это с неправильной версией: http://jsfiddle.net/uvwkD/
$("#sel").attr("selectedIndex")
или
$("#sel")[0] //to get the DOM element
$("#sel")[0].selectedIndex
Вы можете сделать это без jQuery:
var sel = document.getElementById( 'sel' );
var index = sel.selectedIndex;
Вы можете получить индекс элемента в этом случае, проверив, сколько у него элементов -элементов перед ним:
$('#sel option:selected').prevAll().length;
Используйте стандартную функцию индекса jquery, как в этом примере кода
$("#sel option:selected").index()
Название не совсем соответствует вопросу...
Как получить индекс тега select- >
option.index // javascript
$(option).prop('index') // jquery
индекс выбранного select- > тега опции:
document.getElementById('sel').selectedIndex // javascript