使用jquery获取optgroup中select选项的索引

我有以下选择:

  12:00 am 12:30 am 1:00 am 1:30 am   12:00 pm 12:30 pm 1:00 pm 1:30 pm   

我需要找到所选选项的整体索引,但是optgroup正在变得困难。 换句话说,所选择的应返回6,但它返回2.我试过这个:

 var idx = $('#end :selected').prevAll().size(); 

但是,它会返回该optgroup中的索引,而不是整个索引。 我无法更改选择选项的格式或值。

嗯…为什么不好的旧DOM方法呢? 对于单选:

 var idx= document.getElementById('end').selectedIndex; // or $('#end')[0].selectedIndex if you must 

或者,它也适用于多选,获取您感兴趣的option元素节点并在其上获取option.index 。

这比使用jQuery处理复杂的选择器要快得多,也简单得多。

使用index()函数查找集合中的元素。 使用$("#end option")构造一组所有选项。 使用:selected伪元素查找所选选项。 注意:索引从0开始。

 var options = $("#end option"); var idx = options.index(options.filter(":selected")); 

你也可以试试这个:

 $('#end option:selected').prop('index') 

这对我有用。 attr('selectedIndex')仅在选择列表中未定义。

jquery方式中的相同内容也很简单:

 var idx = $('#end').attr('selectedIndex'); 
 //funcion para seleccionar con jquery por el index del select var text = ''; var canal = ($("#name_canal").val()).split(' '); $('#id_empresa option').each(function(i, option) { text = $('#id_empresa option:eq('+i+')').text(); if(text.toLowerCase() == canal[0].toLowerCase()){ $('#id_empresa option:eq('+i+')').attr('selected', true); } }); 
 var index = -1; $('#end option').each(function(i, option) { if (option.selected) index = i; }); 

有点难看,但我觉得那很有用。

根据您的问题返回所有选定选项的索引值。 您可以尝试以下代码,可能会帮助您。

码:

javascript代码:

   

  $(function(){ $('#allcheck').click(function(){ var chk=$('#select_option >optgroup > option:selected'); chk.each(function(){ alert('Index: ' + $('option').index(this)); }); }); });}); 

HtML代码:

   

  Select  All