在jQuery中,如何通过名称属性选择一个元素?

我的网页上有3个单选按钮,如下所示。

<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中,当这三个中的任何一个被点击时,我想得到所选单选按钮的值。在jQuery中,我们有id(#)和class(.)选择器,但如果我想通过它的名字找到一个单选按钮,像下面这样怎么办?

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

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

解决办法

这样应该就可以了,所有这些都在文档中,其中有一个与此非常相似的例子。

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

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

评论(7)

要确定哪个单选按钮被选中,请尝试这样做。

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

该事件将对该组中的所有单选按钮进行捕捉,所选按钮的值将被放在val中。

*更新:发帖后,我认为Paolo的答案更好,因为它少用了一次DOM遍历。我让这个答案继续有效,因为它展示了如何以一种跨浏览器兼容的方式获得所选元素。

评论(4)

也许像这样的东西?

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

当你点击任何一个单选按钮时,我相信它最终会被选中,所以这将会被调用,用于选中的单选按钮。

评论(2)