页面有四个复选框,一个为全选框,三个为子选项。当选中全选框时,所有子选项需要选中,反之取消选中全选框,所有子选项也会取消。其次,当全选框未选中时,若所有子选项选中时,全选框选中,反之有一个子选项未选中,全选框 未选中
时间: 2023-10-27 20:04:31 浏览: 119
这是一个常见的前端开发问题,可以通过以下方式来实现:
1. 给全选框和子选项的复选框都添加一个相同的 class,便于后面使用 jQuery 来选择它们。
2. 给全选框的复选框绑定一个 click 事件,当它被点击时,触发一个函数:
a. 判断全选框是否被选中,如果是,则选中所有子选项的复选框;否则取消所有子选项的复选框。
b. 判断是否存在任何一个子选项未被选中,如果存在,则取消全选框的复选框;否则选中全选框的复选框。
3. 给每个子选项的复选框绑定一个 click 事件,当它被点击时,触发一个函数:
a. 判断是否存在任何一个子选项未被选中,如果存在,则取消全选框的复选框;否则选中全选框的复选框。
下面是一个示例代码,可以供你参考:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>全选/反选</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(function() {
// 给全选框和子选项的复选框都添加一个相同的 class
var $selectAll = $('.select-all');
var $subCheckboxes = $('.sub-checkbox');
// 给全选框的复选框绑定一个 click 事件
$selectAll.on('click', function() {
if ($(this).prop('checked')) {
$subCheckboxes.prop('checked', true);
} else {
$subCheckboxes.prop('checked', false);
}
updateSelectAll();
});
// 给每个子选项的复选框绑定一个 click 事件
$subCheckboxes.on('click', function() {
updateSelectAll();
});
// 更新全选框的复选框状态
function updateSelectAll() {
var allChecked = true;
$subCheckboxes.each(function() {
if (!$(this).prop('checked')) {
allChecked = false;
return false;
}
});
if (allChecked) {
$selectAll.prop('checked', true);
} else {
$selectAll.prop('checked', false);
}
}
});
</script>
</head>
<body>
<label><input type="checkbox" class="select-all">全选</label>
<label><input type="checkbox" class="sub-checkbox">子选项1</label>
<label><input type="checkbox" class="sub-checkbox">子选项2</label>
<label><input type="checkbox" class="sub-checkbox">子选项3</label>
</body>
</html>
```
阅读全文