-1

当使用 jQuery 1.8.3 版本时,以下代码显示包含“Radio1 Selected”、“Radio2 Selected”或“Radio3 Selected”的警报框,以响应单选按钮上的单击事件。但是,之后的任何版本都显示“未选择”。任何想法为什么?谢谢

<html>
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
function radioClicked(){
    if ($('#radio1').attr('checked') == 'checked') alert('Radio 1 Selected');
    else if ($('#radio2').attr('checked') == 'checked') alert('Radio 2 Selected');
    else if ($('#radio3').attr('checked') == 'checked') alert('Radio 3 Selected');
    else alert('None Selected');
}
</script>
</head>
<body>
<label for="radio1">Radio 1</label><input type="radio" id="radio1" name="radios" onclick="radioClicked()" />
<label for="radio2">Radio 2</label><input type="radio" id="radio2" name="radios" onclick="radioClicked()" />
<label for="radio3">Radio 3</label><input type="radio" id="radio3" name="radios" onclick="radioClicked()" />
</body>
</html>
4

1 回答 1

2

要查看是否选中了复选框,您应该使用.is(':checked')

function radioClicked(){
    if ($('#radio1').is(':checked')) alert('Radio 1 Selected');
    else if ($('#radio2').is(':checked')) alert('Radio 2 Selected');
    else if ($('#radio3').is(':checked')) alert('Radio 3 Selected');
    else alert('None Selected');
}

检查所有以“radio”开头的复选框的更简单方法是:

function radioClicked(){
    $('[id^="radio"]').filter(':checked').each(function(i,ele) {
        alert(ele.id + ' is checked');
    })
}

而且由于它们都具有相同的名称并且属于同一组,因此只能检查一个收音机,因此您甚至可以这样做:

function radioClicked(){
    alert( $('[name=radios]:checked').prop('id') + ' is checked');
}
于 2013-05-04T23:51:57.007 回答