5

如果我有一些单选按钮:

<input type="radio" name="test" value="apple"> Apple<br/>
<input type="radio" name="test" value="banana" CHECKED> Banana<br/>
<input type="radio" name="test" value="carrot"> Carrot<br/>

然后我在jQuery中定义收音机组

var test = $('input:radio[name="test"]')


如何在不重写的情况下根据变量 test 获取选中元素的值

var test_val = $('input:radio[name="test"]:checked').val();

我都试过了

$(test):checked.val();
test:checked.val();

作为更改功能的一部分,我也尝试过这个:

$(test).change(function() {
    if ($(this):checked.val() == 'no') {
        $('#featured').stop().fadeOut();
    } else if ($(this):checked.val() == 'yes') {
        $('#featured').stop().fadeIn();
    }
});

只是想知道这是否可能,或者我是否必须重新写出完整的输入选择器才能获得值。

PS
如果IE8不支持:checked选择器,我可以用什么代替?

4

4 回答 4

9

您可以使用.filter()帮助

test.filter('input:checked')

.filter()也支持回调:

test.filter(function() {
    return this.name === 'test' && this.checked
});

我不知道:checked选择器不适用于 IE8。如果是这样,后一个示例应该可以工作(直接访问节点 expando)

于 2011-01-31T09:08:48.670 回答
0

您正在尝试将“CSS 语法”与 JavaScript 语法混合。那是行不通的。

You can use jQuery's filter() method to limit the elements selected with a previous jQuery query:

var test = $('input:radio[name="test"]')

var test_val = test.filter(":checked").val();
于 2011-01-31T09:12:24.407 回答
0

try this...

$(test).change(function() {
 if ($(this).is(':checked').val() == 'no'){
   $('#featured').stop().fadeOut();
 } else if ($(this).is(':checked').val() == 'yes'){
  $('#featured').stop().fadeIn();
 }
});
于 2011-01-31T09:15:58.530 回答
0

Startibg from var test, you can use the .filter() function, as shown in this jsFiddle

var test = $('input:radio[name="test"]');
alert(test.filter(':checked').val());
于 2011-01-31T09:17:57.807 回答