<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”=&gt; 0,value =“44”=&gt; 1,......
感谢名单
答案 0 :(得分:17)
只有鲍勃的第二个答案是正确的:
$("#sel")[0].selectedIndex
使用: http://jsfiddle.net/b9chris/wxeVN/1/
仅当用户(或浏览器的DOM还原)未更改自页面加载后选择的选项时,才使用.attr()
:
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
- 比典型的索引更方便一点的使用。
答案 1 :(得分:10)
在我写这篇文章时,尽管近五年前被指出,但其中两个最佳答案(包括已接受的答案)是不正确的。 attr("selectedIndex")
不执行任何操作,因为selectedIndex
是实际DOM元素的属性,而不是HTML属性。您需要使用prop
:
$(this).prop('selectedIndex')
交互式演示将此与不正确的版本进行比较:http://jsfiddle.net/uvwkD/
答案 2 :(得分:5)
$("#sel").attr("selectedIndex")
或
$("#sel")[0] //to get the DOM element
$("#sel")[0].selectedIndex
答案 3 :(得分:3)
这样做:
$("#sel").attr("selectedIndex")
答案 4 :(得分:2)
你可以在没有jQuery的情况下实现它:
的 var sel = document.getElementById( 'sel' );
var index = sel.selectedIndex;
强>
答案 5 :(得分:2)
在这种情况下,你可以通过检查所选元素之前有多少兄弟元素来获取元素的索引:
$('#sel option:selected').prevAll().length;
答案 6 :(得分:1)
使用jquery的标准索引函数,如此代码示例
$("#sel option:selected").index()
答案 7 :(得分:0)
标题与问题不相符......
如何获取select-&gt;选项标记的索引
option.index // javascript
$(option).prop('index') // jquery
选定选择 - &gt;选项标记的索引:
document.getElementById('sel').selectedIndex // javascript