jQuery:如何获取选中的单选按钮的索引

我最近遇到了一个StackOverflow答案,它给出了有关如何使用jQuery获取选中的单选按钮的值的绝佳说明:

var radioVal = $("#myFormID input:radio[name='radioFieldName']:checked").val();
alert('Selected radio button value = ' + radioVal);

现在我试图找到选中的单选按钮的从零开始的索引。 我认为这会比较简单:

var radioIdx = $("#myFormID input:radio[name='radioFieldName']:checked").index();

但是, radioIdx始终返回值-1 。 关于我可能做错什么的想法?


这应该工作。 你可以在一行中做到这一切,但我分手了,以便阅读:

var radioButtons = $("#myFormID input:radio[name='radioFieldName']");
var selectedIndex = radioButtons.index(radioButtons.find(':checked'));

编辑:确认您的选择器是正确的。 一步一步分解:

var radioButtons = $("#myFormID input:radio[name='radioFieldName']");

// this should contain the count of all your radio buttons
var totalFound = radioButtons.length;

// this should contain the checked one
var checkedRadioButton = radioButtons.find(':checked');

// this should get the index of the found radio button based on the list of all
var selectedIndex = radioButtons.index(checkedRadioButton);

哪一步在这些方面没有产生预期的价值?

编辑:显示最终解决方案

var radioButtons = $("#myFormID input:radio[name='radioFieldName']");
var selectedIndex = radioButtons.index(radioButtons.filter(':checked'));

尝试使用允许您在集合中指定元素并返回其在集合中的相对位置的索引形式:

var radioIdx = $(":radio[name='radioFieldName']")
                    .index($(":radio[name='radioFieldName']:checked")); 

或者找到第一个项目与另一个集合中的选择器相匹配的版本,并报告它在第二个集合中的位置。

var radioIdx = $(":radio[name='radioFieldName']:checked")
                   .index(":radio[name='radioFieldName']");

有几个选项:

1)枚举通过单选按钮列表(又名没有:checked修饰符)并测试以查看它是否被检查; 如果是这样,你有组中的元素的ID。

2)更好的方法(imo)是简单地将一些数据与每个元素相关联并提取数据。 所以如果你给该元素一个'数据索引'属性的值,你可以直接调用

$('#myFormID input:radio[name='radioFieldName']:checked').data('index')

并有价值。

链接地址: http://www.djcxy.com/p/24593.html

上一篇: jQuery: how to get the index of a checked radio button

下一篇: jQuery get value of selected radio button