在jQuery中,如何通过名称属性select元素?

我的网页上有3个单选button,如下所示:

<label for="theme-grey"> <input type="radio" id="theme-grey" name="theme" value="grey" />Grey</label> <label for="theme-pink"> <input type="radio" id="theme-pink" name="theme" value="pink" />Pink</label> <label for="theme-green"> <input type="radio" id="theme-green" name="theme" value="green" />Green</label> 

在jQuery中,当点击这三个元素中的任意一个时,我想获得所选单选button的值。 在jQuery中我们有id(#)和class(。)select器,但是如果我想通过它的名字find一个单选button,如下所示?

 $("<radiobutton name attribute>").click(function(){}); 

请告诉我如何解决这个问题。

这应该做到这一点,所有这一切都在文档中 ,它有一个非常类似的例子:

 $("input:radio[name=theme]").click(function() { var value = $(this).val(); }); 

我也应该注意到你在这个片段中有多个相同的ID。 这是无效的HTML。 使用类来分组元素,而不是ID,因为它们应该是唯一的。

要确定选中哪个单选button,请尝试以下操作:

 $('input:radio[name=theme]').click(function() { var val = $('input:radio[name=theme]:checked').val(); }); 

事件将被捕获到组中的所有单选button,所选button的值将被置于val中。

更新:发布后,我决定上面的Paolo的答案是更好的,因为它使用一个较less的DOM遍历。 我正在让这个答案成立,因为它展示了如何以跨浏览器兼容的方式获得选定的元素。

 $('input:radio[name=theme]:checked').val(); 

其他方式

 $('input:radio[name=theme]').filter(":checked").val() 

这对我很好。 例如,你有两个单选button具有相同的“名称”,你只是想获得检查的值。 你可以试试这个。

 $valueOfTheCheckedRadio = $('[name=radioName]:checked').val(); 

以下代码用于通过名称获取所选的单选button值

 jQuery("input:radio[name=theme]:checked").val(); 

谢谢阿德南

我发现这个问题,因为我从jQuery的1.7.2升级到1.8.2后,我正在研究一个错误。 我正在添加我的答案,因为jQuery 1.8和更高版本的变化已经改变了现在这个问题的答案。

使用jQuery 1.8,他们已经弃用伪select器,例如:radio,:checkbox,:text。

为了做到上述,只需用[type=radio]replace:radio

所以你的答案现在成为jQuery 1.8及以上版本的所有版本:

 $("input[type=radio][name=theme]").click(function() { var value = $(this).val(); }); 

您可以阅读1.8自述文件中 的更改以及特定于此更改的 故障 单 ,以及了解“附加信息”部分下的:无线电select器页面上的原因。

对于任何不想包括一个图书馆来做一些非常简单的事情的人:

 document.querySelector('[name="theme"]:checked').value; 

的jsfiddle

有关当前答案的性能概述, 请点击此处

如果您想知道单击事件之前的默认选定单选button的值,请尝试以下操作:

 警报($( “input:单选:检查”。)VAL()); 

如果页面上有多个广播组,则可以使用筛选function,如下所示

 $('input[type=radio]').change(function(){ var value = $(this).filter(':checked' ).val(); alert(value); }); 

这里是小提琴的url

http://jsfiddle.net/h6ye7/67/

 <input type="radio" name="ans3" value="help"> <input type="radio" name="ans3" value="help1"> <input type="radio" name="ans3" value="help2"> <input type="radio" name="ans2" value="test"> <input type="radio" name="ans2" value="test1"> <input type="radio" name="ans2" value="test2"> <script type="text/javascript"> var ans3 = jq("input[name='ans3']:checked").val() var ans2 = jq("input[name='ans2']:checked").val() </script> 

如果你想要一个真/假值,使用这个:

  $("input:radio[name=theme]").is(":checked") 

这样的事情可能吗?

 $("input:radio[name=theme]").click(function() { ... }); 

当你点击任何一个单选button时,我相信它最终会被选中,所以这将被称为选定的单选button。

我在同一页上有多个单选button组,你也可以尝试这个来获得单选button的值:

 $("input:radio[type=radio]").click(function() { var value = $(this).val(); alert(value); }); 

干杯!

也可以使用CSS类来定义单选button的范围,然后使用以下来确定该值

 $('.radio_check:checked').val() 

这对我有用..

HTML:

 <input type="radio" class="radioClass" name="radioName" value="1" />Test<br/> <input type="radio" class="radioClass" name="radioName" value="2" />Practice<br/> <input type="radio" class="radioClass" name="radioName" value="3" />Both<br/> 

jQuery的:


     $(“。radioClass”)。each(function(){
        如果($(本)。是( ':检查'))
        警报($(本).VAL());
     });

希望能帮助到你..

 $('input:radio[name=theme]').bind( 'click', function(){ $(this).val(); }); 

您可能会注意到使用类select器来获取ASP.NET RadioButton控件的值始终是空的,这是原因。

您可以在ASP.NET创buildRadioButton控件,如下所示:

 <asp:RadioButton runat="server" ID="rbSingle" GroupName="Type" CssClass="radios" Text="Single" /> <asp:RadioButton runat="server" ID="rbDouble" GroupName="Type" CssClass="radios" Text="Double" /> <asp:RadioButton runat="server" ID="rbTriple" GroupName="Type" CssClass="radios" Text="Triple" /> 

ASP.NET为您的RadioButton呈现以下HTML

 <span class="radios"><input id="Content_rbSingle" type="radio" name="ctl00$Content$Type" value="rbSingle" /><label for="Content_rbSingle">Single</label></span> <span class="radios"><input id="Content_rbDouble" type="radio" name="ctl00$Content$Type" value="rbDouble" /><label for="Content_rbDouble">Double</label></span> <span class="radios"><input id="Content_rbTriple" type="radio" name="ctl00$Content$Type" value="rbTriple" /><label for="Content_rbTriple">Triple</label></span> 

对于ASP.NET我们不想使用RadioButton控件的名字或者id,因为你可以在上面的代码中看到,因为他们可以用任何理由改变用户的手(改变容器名,表单名,用户控件名,…) 。

使用jQuery获取RadioButton值的唯一剩下的可行方法是使用这个答案中提到的css类来完成一个完全不相关的问题,如下

 $('span.radios input:radio').click(function() { var value = $(this).val(); });