【问题标题】:jQuery check all not working on checkboxesjQuery检查所有不工作的复选框
【发布时间】:2011-10-05 00:40:41
【问题描述】:

我正在编写一些允许以下操作的代码:

1.) 如果用户选中一个复选框,它将更改父 <tr> 以选择一个类(这也可以取消选中并删除该类)

2.) 任何已选中的复选框都会在文档加载时添加该类

3.) 如果用户检查#checkall 输入,则所有输入都将被选中并添加选中的类(如果再次选中,它将取消全选并删除该类)

这是我目前的代码:

$("table input[name=choose]:checked").each(function()
    {
        $(this).closest("tr").addClass("selected");
    });

    $("table input[name=choose]").live("change", function()
    {
        $(this).closest("tr").toggleClass("selected");
    });

    if ($('#checkall:checked') ==  true)
    {
        $('#checkall').live("click", function()
        {
            $('table input[name=choose]').attr('checked', false);
            $('table input[name=choose]').closest("tr").toggleClass("selected");              
        });
    }
    else
    {
        $('#checkall').live("click", function()
        {
            $('table input[name=choose]').attr('checked', true);
            $('table input[name=choose]').closest("tr").toggleClass("selected");
        });
    }

前两个工作正常,但数字 3 并没有取消选中复选框...任何想法为什么?但是课堂部分工作正常吗??

谢谢

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    我猜它总是运行到 else 块(你调试过这个)?

    试着写这个来检查复选框是否被选中:

    if ($('#checkall').attr('checked'))
    

    【讨论】:

    • 我认为它不会进入 else 语句,因为此检查发生在页面加载时而不是之后检查??
    • 您必须在#checkall 复选框的点击处理程序中执行此代码!
    【解决方案2】:

    因为if ($('#checkall:checked') == true) 总是假的..

    随便用

    if ($('#checkall').is(':checked'))
    

    if ( $('#checkall:checked').length )
    

    评论后更新

    将整个第三部分(所有 if/else)替换为

    $('#checkall').live("change", function()
            {
                $('table input[name=choose]')
                     .attr('checked', this.checked)
                     .closest("tr")
                     .toggleClass("selected", this.checked);              
            });
    

    http://jsfiddle.net/gaby/KqwsZ/1/ 上的演示

    【讨论】:

    • @Cameron,不是 again ,确实..您需要它来切换基于 #checkall.. 的当前值的更新答案..
    • @Cameron,你可能也不需要live。如果你用另一个动态替换实际的#checkall复选框,就会使用它。直接使用.change(function(){..})。跨度>
    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多