打开/关闭复选框

我有以下几点:

$(document).ready(function()
{
    $("#select-all-teammembers").click(function() {
        $("input[name=recipients[]]").attr('checked', true);
    });                 
});

点击时,我想要id="select-all-teammembers"在已选中和未选中之间进行切换。 想法? 那不是几十行代码?


你可以写:

$(document).ready(function() {
    $("#select-all-teammembers").click(function() {
        var checkBoxes = $("input[name=recipients[]]");
        checkBoxes.prop("checked", !checkBoxes.prop("checked"));
    });                 
});

在jQuery 1.6之前,当我们只有attr()而不是prop()时,我们曾经写过:

checkBoxes.attr("checked", !checkBoxes.attr("checked"));

但是,当应用于“布尔”HTML属性时, prop()attr() prop()具有更好的语义,所以在这种情况下它通常是首选。


//this toggles the checkbox, and fires its event if it has    

$('input[type=checkbox]').trigger('click'); 
//or
$('input[type=checkbox]').click(); 

我知道这是旧的,但问题是有点模糊, 切换可能意味着每个复选框应该切换其状态,无论这是什么。 如果您有3个选中,2个未选中,则切换会使前3个未选中,最后2个选中。

为此,这里没有解决方案,因为它们使所有复选框具有相同的状态,而不是切换每个复选框的状态。 对许多复选框执行$(':checkbox').prop('checked')返回所有.checked二进制属性之间的逻辑AND,即如果其中一个未选中,则返回的值为false

如果你想实际切换每个复选框状态而不是使它们全部相等,你需要使用.each()

   $(':checkbox').each(function () { this.checked = !this.checked; });

请注意,在处理程序中不需要$(this) ,因为.checked属性在所有浏览器中都存在。

链接地址: http://www.djcxy.com/p/47427.html

上一篇: Toggle Checkboxes on/off

下一篇: How to prevent two CUDA programs from interfering