在以下代码中,为什么当通过变量名检查时,无线电报告的值是否正确?
var $myRadio = $('input[type=radio][name=options]:checked');
$('#button').click(() => {
// this works
console.log($('input[type=radio][name=options]:checked').val());
// this doesn't :(
console.log($myRadio.val());
});
https://jsfiddle.net/charsi/p4beztwx/13/
我正在使用mdl单选按钮,因此可能会导致它。我也尝试使用$myRadio[0].MaterialRadio.value
获取值,但这也不起作用。
答案 0 :(得分:1)
通过变量名检查时获取错误值的原因是因为您在click事件之前设置了$myRadio
。 $myRadio
设置为文档就绪(在单击事件之前),它获取已检查的radio选项的值,此时此选项始终为1.
在点击处理程序中移动$myRadio
应该有效。为什么?因为现在只要调用click函数就可以得到无线电的值(已选中),这实际上就是你所需要的。
$('#button').click(() => {
var $myRadio = $('[id^="option"]:checked');
// neither of these work
alert($('input[type=radio][name=options]:checked').val());
alert($myRadio.val());
});
小提琴here
答案 1 :(得分:1)
对于遇到同样问题的其他人。在检查其值时不想调用单选按钮名称,可以使用filter
-
var $myRadio = $('input[type=radio][name=options]');
$('#button').click(() => {
console.log($myRadio.filter(':checked').val());
}