<select id="test1">
<optgroup label="group1">Group 1
<option value="one">Option 1 of Group 1</option>
</optgroup>
<optgroup label="group2">Group 2
<option value="one">Option 1 of Group 2</option>
<option value="two">Option 2 of Group 2</option>
</optgroup>
</select>
选项值可以是重复的,所以我想得到索引。但是当我尝试
时$('#test1 option:selected').index();
显示相对于组的索引。有没有一种简单的方法可以根据所有群体展示它。
$('#test1')[0].length //equals 3 and this is what I'd like the index based off
目前,如果我选择'Option 2 Group 2'
,它会显示相对于第2组的索引1.我希望它显示index = 2,基于整个列表。
答案 0 :(得分:4)
当然,只需使用.index()
功能,如:
$('#test1 option').index($('#test1 option:selected'))
<强> jsFiddle example 强>
作为docs州:
如果在元素集合和DOM元素上调用.index()或 传入jQuery对象,.index()返回一个指示的整数 传递元素相对于原始集合的位置。
当您说“它显示相对于组的索引”时,您实际上遇到了错误。如果没有传递给index()的参数,它会为您提供相对于其兄弟元素的索引。
答案 1 :(得分:4)
你错了。索引从0开始,否则长度是一个将返回3的计数。
您可以使用this.selectedIndex
代替所有jQuery,它应根据下拉菜单返回正确的索引。