使用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