使用jQuery切换单选按钮

时间:2013-10-02 16:26:25

标签: javascript jquery

我正在尝试使用jQuery切换几个单选按钮。但事实证明并非如此简单。

<button id="toggler">click me</button><br>
<input type="radio" name="speeds" value="fast" checked>fast<br>
<input type="radio" name="speeds" value="slow">slow<br>

$('#toggler').click(function() {
    $('input[name="speeds"]').each(function(){
        $(this).prop("checked", !$(this).prop("checked"));
    });
});

http://jsfiddle.net/beC7q/

有人可以解释为什么上面的代码不起作用吗?

2 个答案:

答案 0 :(得分:25)

如果只有两个单选按钮

$('#toggler').click(function() {
    $('input[type="radio"]').not(':checked').prop("checked", true);
});

演示:Fiddle

如果有超过2个元素

var $radios = $('input[type="radio"][name="speeds"]')
$('#toggler').click(function() {
    var $checked = $radios.filter(':checked');
    var $next = $radios.eq($radios.index($checked) + 1);
    if(!$next.length){
        $next = $radios.first();
    }
    $next.prop("checked", true);
});

演示:Fiddle

答案 1 :(得分:9)

组中的单选按钮(即具有相同input值的name)已经是互斥的。您只需修改一个“已检查”状态即可更改整个组的状态:

例如,此代码始终将组中的最后一个广播设置为“已选中”:

$('#toggler').click(function() {
    $('input[type="radio"][name="speeds"]').last().prop('checked', true);
});

DEMO