我正在尝试切换桌面上的所有复选框,但我的代码有效,但有一些问题,我找不到如何驾驭它们。所以这是代码:
$(function () {
$('#toggleCheckbox').on('click', function () {
var $toggle = $(this).is(':checked');
$("#codigoArancelarioBody").find("input:checkbox").click();
});
});
看看this小提琴我设置进行测试并进行测试:
#codigoArancelarioBody
内的其余复选框被选中,这是正确的我如何解决这个问题?另外,我想在TR I标记中添加一个'removedAlert'类,怎么做?
答案 0 :(得分:1)
您需要两个点击事件处理程序,一个用于选中/取消选中所有框,另一个用于其他框
<强> JS 强>
$('#toggleCheckbox').on('click', function () {
var $toggle = $(this).is(':checked');
$("#codigoArancelarioBody").find("input:checkbox").prop("checked", $toggle);
});
$("#codigoArancelarioBody input:checkbox").on('click', function () {
if (!$(this).is(':checked')) {
$('#toggleCheckbox').prop("checked", false);
} else if ($("#codigoArancelarioBody input:checkbox").length == $("#codigoArancelarioBody input:checkbox:checked").length) {
$('#toggleCheckbox').prop("checked", true);
}
});
因为相同的代码将在我的代码和很多地方应用 为了避免干,我想把选择器作为参数传递给所有人 您的代码解决方案可以编辑您的帖子来实现这一目标吗?
$toggleCheckBox = $('#toggleCheckbox');
$checkBoxTbody = $("#codigoArancelarioBody");
$toggleCheckBox.on('click', function () {
var $toggle = $(this).is(':checked');
$checkBoxTbody.find("input:checkbox").prop("checked", $toggle);
});
$checkBoxTbody.find("input:checkbox").on('click', function () {
if (!$(this).is(':checked')) {
$toggleCheckBox.prop("checked", false);
} else if ($checkBoxTbody.find("input:checkbox").length == $checkBoxTbody.find("input:checkbox:checked").length) {
$toggleCheckBox.prop("checked", true);
}
});
答案 1 :(得分:0)
如果您不需要“点击”事件,则可以执行此操作:
$(function () {
$('#toggleCheckbox').on('change', function () {
var toggle = $(this).is(':checked');
$("#codigoArancelarioBody").find("input:checkbox").prop('checked', toggle ).closest('tr').addClass('removedAlert');
});
});
答案 2 :(得分:0)
代码实际上正在执行您告诉它的操作,即每次 点击 顶部的复选框 点击 < / strong>到其他复选框。这样,如果选中一个方框,它将取消选中,因为它不会介意是否检查顶部。
你真正想要的是“当我 检查 时, 检查 所有其他人,当我 取消选中 时, 取消选中 所有其他人“,如您所见,这有点不同。< / p>
试试这个:
$(function () {
// best practice: always store the selectors you access multiple times
var checkboxes = $("#codigoArancelarioBody").find("input:checkbox"),
toggleAll = $('#toggleCheckbox');
toggleAll.on('click', function () {
// is the top checkbox checked? return true, is it unchecked? Then return false.
var $toggle = $(this).is(':checked');
// .prop('checked', true) makes it checked, .prop('checked', false) makes it unchecked
checkboxes.prop('checked', $toggle);
});
});