jQuery检查所有不工作的复选框

时间:2011-10-04 16:20:25

标签: javascript jquery

我正在编写一些允许以下内容的代码:

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没有取消选中复选框...任何想法为什么?但是班级部分工作正常吗?

由于

2 个答案:

答案 0 :(得分:1)

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

尝试编写此选项以检查是否选中了复选框:

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

答案 1 :(得分:0)

因为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/