jQuery:从变量名或$(this)检查值

时间:2011-01-31 09:05:50

标签: jquery checkbox checked

如果我有一些单选按钮:

<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获取checked元素的值

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();
    }
});

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

P.S。
如果IE8不支持:checked选择器,我可以使用什么呢?

4 个答案:

答案 0 :(得分:7)

您可以使用.filter() help

test.filter('input:checked')

.filter()也支持回调:

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

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

答案 1 :(得分:0)

您正在尝试将“CSS语法”与JavaScript语法混合使用。那不行。

您可以使用jQuery的filter()方法来限制使用以前的jQuery查询选择的元素:

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

var test_val = test.filter(":checked").val();

答案 2 :(得分:0)

试试这个......

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

答案 3 :(得分:0)

var test开始,您可以使用.filter()函数,如jsFiddle

所示
var test = $('input:radio[name="test"]');
alert(test.filter(':checked').val());