需要为包含optgroup的select选择索引

时间:2015-03-10 16:41:05

标签: jquery

<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,基于整个列表。

http://jsfiddle.net/waeeq2xd/1/

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,它应根据下拉菜单返回正确的索引。

http://jsfiddle.net/59xpn9mm/