javascript - 我应该如何设计一个应该应用 JS 的区域?
问题描述
我正在寻找一种将 JQuery 函数应用于每个部门的方法。
下面的代码应用了所有名为 chk[] 的复选框。但我想让它检查每个 div。是否可以将参数放入 Jquery 函数中?我想让它可以选择 div(Part1-4)。
//Is it possible to put parameter?
$(function(arg) {
$('#all').on('click', function() {
//arg should be part_1 or part_2 part_3...
//$("arg input[name='chk[]']").prop('checked', this.checked);
$("input[name='chk[]']").prop('checked', this.checked);
});
$("input[name='chk[]']").on('click', function() {
if ($('#part_ :checked').length == $('#part_ :input').length) {
$('#all').prop('checked', true);
} else {
$('#all').prop('checked', false);
}
});
});
<form method="POST" action="{{ route('debug.store') }}">
<label for="all"><input type="checkbox" name="allChecked" id="all">ALL</label>
<div id="part_1">
<label><input type="checkbox" name="chk[]" value="A">1A</label>
<label><input type="checkbox" name="chk[]" value="B">1B</label>
<label><input type="checkbox" name="chk[]" value="C">1C</label>
<label><input type="checkbox" name="chk[]" value="D">1D</label>
</div>
</form>
<form method="POST" action="{{ route('debug.store') }}">
<label for="all"><input type="checkbox" name="allChecked" id="all">ALL</label>
<div id="part_2">
<label><input type="checkbox" name="chk[]" value="A">2A</label>
<label><input type="checkbox" name="chk[]" value="B">2B</label>
<label><input type="checkbox" name="chk[]" value="C">2C</label>
<label><input type="checkbox" name="chk[]" value="D">2D</label>
</div>
</form>
<form method="POST" action="{{ route('debug.store') }}">
<label for="all"><input type="checkbox" name="allChecked" id="all">ALL</label>
<div id="part_3">
<label><input type="checkbox" name="chk[]" value="A">3A</label>
<label><input type="checkbox" name="chk[]" value="B">3B</label>
<label><input type="checkbox" name="chk[]" value="C">3C</label>
<label><input type="checkbox" name="chk[]" value="D">3D</label>
</div>
</form>
//4 , 5 , 6 ...
解决方案
你可以这样做:
$(document).ready(function() {
$("input[type='checkbox']").on("change", function() {
let selected = $(this).val();
if (selected == "all") {
$("input[name='chk[]']").prop('checked', true);
} else if ($(this).val().startsWith("part")) {
$("#" + selected + " input[name='chk[]']").prop('checked', true);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label for="all"><input type="checkbox" name="allChecked" id="all" value="all">ALL</label>
<label for="part-1"><input type="checkbox" name="part-1-Checked" value="part_1">Part 1</label>
<label for="part-2"><input type="checkbox" name="part-2-Checked" value="part_2">Part 2</label>
<label for="part-3"><input type="checkbox" name="part-3-Checked" value="part_3">Part3</label>
<form method="POST" action="{{ route('debug.store') }}">
<div id="part_1">
<label><input type="checkbox" name="chk[]" value="A">1A</label>
<label><input type="checkbox" name="chk[]" value="B">1B</label>
<label><input type="checkbox" name="chk[]" value="C">1C</label>
<label><input type="checkbox" name="chk[]" value="D">1D</label>
</div>
</form>
<form method="POST" action="{{ route('debug.store') }}">
<div id="part_2">
<label><input type="checkbox" name="chk[]" value="A">2A</label>
<label><input type="checkbox" name="chk[]" value="B">2B</label>
<label><input type="checkbox" name="chk[]" value="C">2C</label>
<label><input type="checkbox" name="chk[]" value="D">2D</label>
</div>
</form>
<form method="POST" action="{{ route('debug.store') }}">
<div id="part_3">
<label><input type="checkbox" name="chk[]" value="A">3A</label>
<label><input type="checkbox" name="chk[]" value="B">3B</label>
<label><input type="checkbox" name="chk[]" value="C">3C</label>
<label><input type="checkbox" name="chk[]" value="D">3D</label>
</div>
</form>
推荐阅读
- typescript - Ag 网格标题行展开和折叠
- camunda - ENGINE-09005 无法解析 BPMN 进程。错误:
- python - 装饰器使用 for 循环但不使用 while 循环
- python - 在 Django Rest Framework 中测试 PUT 方法
- javascript - Javasript 代码在 Safari 8/9 版本中不起作用
- python - 使用 nRF24L01+ 无线模块无法让 Raspberry Pi 4 和 Arduino 成功通信
- python - 实施 XGBoost 回归器的问题
- node.js - NodeJS 和 React - LAN 连接不起作用
- c++ - “在有向图中查找循环”算法在特定的 leetcode 问题中不起作用。错误-“AddressSanitizer:特定地址上的 StackOverflow”
- javascript - Vue-router重定向不适用于store.js调度功能