jQuery复选框全选并在选择时更改背景色
我有一个表格,第一列有复选框,标题中有一个全选复选框。当我选中复选框时,我需要更改行的颜色 变量$tbl=$'tbl'; var$bodychk=$tbl.find'tbody input:checkbox'; $function{ $bodychk.关于“更改”,函数{ $this.最近的'tr'。切换类别'hilite'; }; $tbl.find'thead input:checkbox'。更改函数{ var c=此项检查; $bodychk.道具“已检查”,c; }; }; 如果选择单个框,则行的颜色将更改 如果单击“全选”框,它将切换其他复选框。 但我不能让两个人一起工作 这些问题很接近,但不能完全回答可能的错误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; }; }; 如果选择单个
只需在单个复选框中添加相同的行:
$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');
});
});