全选js实现
全选功能的实现方法
在JavaScript中实现全选功能通常涉及复选框的联动操作,以下是几种常见实现方式:

基础DOM操作实现
// 获取全选复选框和子复选框
const selectAll = document.getElementById('selectAll');
const items = document.querySelectorAll('.item-checkbox');
// 全选复选框事件监听
selectAll.addEventListener('change', function() {
items.forEach(item => {
item.checked = this.checked;
});
});
// 子复选框事件监听
items.forEach(item => {
item.addEventListener('change', function() {
const allChecked = [...items].every(item => item.checked);
selectAll.checked = allChecked;
});
});
使用事件委托优化
对于动态生成的列表项,使用事件委托更高效:

document.addEventListener('change', function(e) {
// 全选操作
if (e.target.id === 'selectAll') {
const checkboxes = document.querySelectorAll('.item-checkbox');
checkboxes.forEach(checkbox => {
checkbox.checked = e.target.checked;
});
}
// 子项操作
if (e.target.classList.contains('item-checkbox')) {
const checkboxes = document.querySelectorAll('.item-checkbox');
const selectAll = document.getElementById('selectAll');
selectAll.checked = [...checkboxes].every(cb => cb.checked);
}
});
jQuery实现方式
如果项目中使用jQuery,实现更加简洁:
$('#selectAll').change(function() {
$('.item-checkbox').prop('checked', $(this).prop('checked'));
});
$('.item-checkbox').change(function() {
const allChecked = $('.item-checkbox').length === $('.item-checkbox:checked').length;
$('#selectAll').prop('checked', allChecked);
});
注意事项
- 确保HTML结构中全选复选框和子复选框有正确的关联关系
- 动态添加元素时需要重新绑定事件或使用事件委托
- 性能优化:对于大量列表项建议使用事件委托
- 可访问性:为复选框添加适当的标签和ARIA属性
扩展功能
实现部分选中状态(indeterminate):
function updateSelectAll() {
const checkedCount = document.querySelectorAll('.item-checkbox:checked').length;
const totalCount = document.querySelectorAll('.item-checkbox').length;
const selectAll = document.getElementById('selectAll');
selectAll.checked = checkedCount === totalCount;
selectAll.indeterminate = checkedCount > 0 && checkedCount < totalCount;
}
// 在子复选框change事件中调用此函数






