только второй ответ Боба является правильным:
$("#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 и prop. Обратите внимание, что как только вы измените выбранный элемент в раскрывающемся списке в этом примере, selectedIndex не изменится и неверен: http://jsfiddle.net/b9chris/wxeVN/ –
Это неправильно. 'attr (" selectedIndex ")' ничего не делает, вам нужно 'prop (" selectedIndex ")'. Демо: http://jsfiddle.net/Nj85e/ –
Обратите внимание, что мой ответ был написан в 2009 году - и в то время, когда он ** был правильным. jQuery претерпел изменения с тех пор. –