用于检查和取消选中复选框的jQuery仅触发一次

Gid*_*eon 9 javascript checkbox jquery

我对jQuery有一个非常简单的要求:如果选中了单选按钮,则检查一组框,如果检查了另一个单元,则清除所有框.

jquery工作,但它只工作一次 - 如果我点击检查所有(所有框检查),然后单击以清除它们(所有框清除),然后再次单击以全部检查 - 没有效果.同样,如果我手动取消选中某些框,然后单击再次全选,则无效.

jQuery的

$('#all').on('change', function() {
    if (!$(this).is(':checked')) {
        $('.country').attr('checked', false);   
    } else {
        $('.country').attr('checked', true);
    }
});


$('#none').on('change', function() {
    if (!$(this).is(':checked')) {
        $('.country').attr('checked', true);    
    } else {
        $('.country').attr('checked', false);
    }
});
Run Code Online (Sandbox Code Playgroud)

HTML

 <div class="subselect">
    <input type="radio" class="TLO" name="radio1" id="all" />Check All
<br />
        <input type="radio" class="TLO" name="radio1" id="none" />Clear All
        <br />
    </div>

    <br />
    <br />
    <div class="cselect" id="countries">
        <input type="checkbox" class="country"  />1
        <br />
        <input type="checkbox" class="country"  />2
        <br />
        <input type="checkbox" class="country"  />3
    </div>
Run Code Online (Sandbox Code Playgroud)

jsFiddle http://jsfiddle.net/vsGtF/1/

j08*_*691 33

改变你.attr().prop().

$('#all').on('change', function() {
    if (!$(this).is(':checked')) {
        $('.country').prop('checked', false);   
    } else {
        $('.country').prop('checked', true);
    }
});    
$('#none').on('change', function() {
    if (!$(this).is(':checked')) {
        $('.country').prop('checked', true);    
    } else {
        $('.country').prop('checked', false);
    }
});
Run Code Online (Sandbox Code Playgroud)

jsFiddle例子

你也可以将它减少到:

$('#all').on('change', function () {
    $('.country').prop('checked', $(this).is(':checked'));
});
$('#none').on('change', function () {
    $('.country').prop('checked', !$(this).is(':checked'));
});
Run Code Online (Sandbox Code Playgroud)

jsFiddle例子

作为.attr()状态的文档:

从jQuery 1.6开始,.attr()方法为尚未设置的属性返回undefined.要检索和更改DOM属性(如表单元素的已检查,已选择或已禁用状态),请使用.prop()方法.