如果我有一些单选按钮:
<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
选择器,我可以使用什么呢?
答案 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());