在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); }; }()));