在jQuery中,如何使用元素检查和取消选中所有复选框?

我有以下代码。 它使用LABEL元素检查页面上的所有复选框,该元素通常位于复选框的顶部。 现在我如何使用相同的LABEL元素取消选中所有框?

jQuery(document).ready(function($) { var $checkBoxes = $('input[type="checkbox"]'); $('label').click(function() { $checkBoxes.attr('checked', true); }); }); 

使用:

 $('.myCheckbox').prop('checked', true); $('.myCheckbox').prop('checked', false); 

对于切换,您需要将状态存储在某个位置,例如data()

 jQuery(document).ready(function($) { var $checkBoxes = $('input[type="checkbox"]'); $('label').on('click', function() { var check = !$(this).data('checked'); $checkBoxes.prop('checked', check); $(this).data('checked', check); }); }); 

小提琴

您可以尝试以下方法:

 var checked = 0; $('label').click(function() { if(checked) { $checkBoxes.prop('checked', true); checked = 1; } else { $checkBoxes.prop('checked',false); checked = 0; } }); 

首先,使用.prop()而不是.attr()

此代码应该工作(未测试):

 $checkBoxes.prop('checked', $checkBoxes.not(':checked').length ? true : false); 

经过二读,我不确定这是不是你想要的。 你想要一个“checkall”按钮,所以当你点击它时,如果未选中一个或多个复选框,它会检查所有其他取消选中全部或真正的“切换按钮”吗?

全部或全部off 。 还有一个封闭装置,以保持所有紧密的范围。

 $('label').click((function () { var state = false; return function () { $checkBoxes.prop('checked', state = !state); }; }()));