使用jQuery检查复选框是否被选中

使用jQuery检查复选框是否被选中

技术背景

在前端开发中,经常需要判断复选框是否被选中,以实现特定的交互逻辑,如表单验证、批量操作等。jQuery 作为一个广泛使用的 JavaScript 库,提供了多种方法来完成这一任务。

实现步骤

单个复选框的检查

对于单个复选框,可以使用以下几种方法:

  1. 使用 is(':checked') 方法:
1
$('#checkbox').is(':checked');
JAVASCRIPT
  1. 使用 prop('checked') 方法:
1
$('#checkbox').prop('checked');
JAVASCRIPT
  1. 直接访问 DOM 元素的 checked 属性:
1
2
$('#checkbox')[0].checked;
$('#checkbox').get(0).checked;
JAVASCRIPT

多个复选框的检查

对于一组具有相同 name 属性的复选框,可以获取被选中的复选框列表:

1
var $boxes = $('input[name=thename]:checked');
JAVASCRIPT

遍历这些复选框:

1
2
3
$boxes.each(function(){
// 处理每个选中的复选框
});
JAVASCRIPT

统计选中的复选框数量:

1
$boxes.length;
JAVASCRIPT

检查至少一个复选框是否被选中

可以通过以下方式检查至少一个复选框是否被选中:

1
2
3
var atLeastOneIsChecked = $('#checkArray:checkbox:checked').length > 0;
// 或者不使用容器
var atLeastOneIsChecked = $('input[name="chk[]"]:checked').length > 0;
JAVASCRIPT

核心代码

jQuery 示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 示例 1 - 使用 checked 属性
$("#test-with-checked").on("click", function(){
if(mycheckbox.checked) {
alert("Checkbox is checked.");
} else {
alert("Checkbox is unchecked.");
}
});

// 示例 2 - 使用 jQuery is 方法
var check;
$("#test-with-is").on("click", function(){
check = $("#mycheckbox").is(":checked");
if(check) {
alert("Checkbox is checked.");
} else {
alert("Checkbox is unchecked.");
}
});

// 示例 3 - 使用 jQuery prop 方法
var check;
$("#test-with-prop").on("click", function(){
check = $("#mycheckbox").prop("checked");
if(check) {
alert("Checkbox is checked.");
} else {
alert("Checkbox is unchecked.");
}
});
JAVASCRIPT

纯 JavaScript 示例代码

1
document.getElementById("myCheck").checked;
JAVASCRIPT

最佳实践

  • 性能考虑:根据 jsperf.com 的测试,直接访问 DOM 元素的 checked 属性最快,其次是 prop('checked') 方法,is(':checked') 方法相对较慢。
  • 避免使用 attr 方法attr 方法在处理 checked 属性时可能会出现问题,建议使用 prop 方法。
  • 事件监听:使用 jQuery 的 on 方法来添加事件监听器,而不是直接在 HTML 中使用内联事件处理程序。

常见问题

ID 重复问题

在 HTML 中,ID 必须是唯一的。如果有多个复选框,不建议使用相同的 ID,建议使用 name 属性或包含元素来选择它们。

嵌套 DOM 元素问题

在某些情况下,嵌套的 DOM 元素可能会导致选择器无法正常工作。可以尝试使用类名和 ID 的组合来选择元素。

1
2
var fd = $('.cb#fd').is(':checked');
var rd = $('.cb#rd').is(':checked');
JAVASCRIPT

使用jQuery检查复选框是否被选中
https://119291.xyz/posts/check-if-checkbox-is-checked-with-jquery/
作者
ww
发布于
2025年6月6日
许可协议