Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery复选框全选并在选择时更改背景色_Jquery_Html - Fatal编程技术网

jQuery复选框全选并在选择时更改背景色

jQuery复选框全选并在选择时更改背景色,jquery,html,Jquery,Html,我有一个表格,第一列有复选框,标题中有一个全选复选框。当我选中复选框时,我需要更改行的颜色 变量$tbl=$'tbl'; var$bodychk=$tbl.find'tbody input:checkbox'; $function{ $bodychk.关于“更改”,函数{ $this.最近的'tr'。切换类别'hilite'; }; $tbl.find'thead input:checkbox'。更改函数{ var c=此项检查; $bodychk.道具“已检查”,c; }; }; 如果选择单个

我有一个表格,第一列有复选框,标题中有一个全选复选框。当我选中复选框时,我需要更改行的颜色

变量$tbl=$'tbl'; var$bodychk=$tbl.find'tbody input:checkbox'; $function{ $bodychk.关于“更改”,函数{ $this.最近的'tr'。切换类别'hilite'; }; $tbl.find'thead input:checkbox'。更改函数{ var c=此项检查; $bodychk.道具“已检查”,c; }; }; 如果选择单个框,则行的颜色将更改 如果单击“全选”框,它将切换其他复选框。 但我不能让两个人一起工作

这些问题很接近,但不能完全回答可能的错误


只需在单个复选框中添加相同的行:

$bodychk.prop('checked', c).closest("tr").toggleClass('hilite');        
您仍然在查找tbody>input:复选框,以便您仍然可以返回到父tr并切换类

类似的内容

我选择不使用切换,因为它不能确保选中复选框以突出显示项目


行$bodychk.trigger'change';导致.change事件触发,这样您就不会向元素添加类,而是触发元素的检查。

这样就行了。谢谢我最终替换了toggleClass,因为这会导致问题@spikej:我认为这个解决方案有一个bug。尝试单击列,然后单击项目1,然后单击列again@indubitablee谢谢我也注意到了这一点,并更换了toggleClass。你用触发器的回答就是我想要的,但我想不出来。啊,我没有注意到你在评论中的胡闹,哈哈,是的,这正是我实现的方式,除了你使用了一个函数来切换,做得很好。如果除了添加一个或两个类之外,您还想让复选框执行其他操作,那么我建议使用.trigger,但由于问题只是添加/删除一个类,因此您的操作会更简单。干杯如何仅对行中的第一个复选框使用此选项?我不想让它切换到那一行后面的其他3个复选框。@BoltBait也许你可以把我和你的问题联系起来,这样我就可以更好地理解你想做什么了。我想出来了。我只是在呈现表时将onchange函数添加到复选框中,而不是像您的示例那样稍后添加它。
var $tbl = $('#tbl');
var $bodychk = $tbl.find('tbody input:checkbox');

$(function () {
    $bodychk.on('change', function () {
        if($(this).is(':checked')) {
            $(this).closest('tr').addClass('hilite');
        }
        else {
            $(this).closest('tr').removeClass('hilite');
        }
    });

    $tbl.find('thead input:checkbox').change(function () {
        var c = this.checked;
        $bodychk.prop('checked', c);
        $bodychk.trigger('change'); 
    });
});