使用jQuery设置复选框的“checked”状态

使用jQuery设置复选框的“checked”状态

技术背景

在前端开发中,经常需要动态地控制复选框的选中状态。jQuery作为一个广泛使用的JavaScript库,提供了多种方法来实现这一需求。同时,由于jQuery版本的更新,不同版本在处理复选框选中状态时有所差异。

实现步骤

现代jQuery(1.6及以上版本)

使用 .prop() 方法来设置复选框的选中状态。

1
2
3
4
// 选中复选框
$('.myCheckbox').prop('checked', true);
// 取消选中复选框
$('.myCheckbox').prop('checked', false);

DOM API

如果只处理一个元素,可以直接访问底层的 HTMLInputElement 并修改其 .checked 属性。

1
2
3
4
// 选中复选框
$('.myCheckbox')[0].checked = true;
// 取消选中复选框
$('.myCheckbox')[0].checked = false;

jQuery 1.5.x 及以下版本

由于 .prop() 方法不可用,需要使用 .attr() 方法。

1
2
3
4
// 选中复选框
$('.myCheckbox').attr('checked', true);
// 取消选中复选框
$('.myCheckbox').attr('checked', false);

检查复选框是否选中

使用 .is(':checked') 方法来检查复选框是否被选中。

1
$('.myCheckbox').is(':checked');

切换复选框状态

1
2
3
$(':checkbox').prop('checked', function (i, value) {
return !value;
});

自定义插件实现

可以创建一个自定义插件来简化操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// 设置复选框的值
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// 切换复选框状态
$(this).each(function(){ this.checked = !this.checked; });
}

return this;
};
})( jQuery );

// 使用插件
$('.myCheckbox').checked(true); // 选中
$('.myCheckbox').checked(false); // 取消选中
$('.myCheckbox').checked('toggle'); // 切换状态

核心代码

以下是一些核心代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 现代jQuery选中复选框
$('.myCheckbox').prop('checked', true);

// 现代jQuery取消选中复选框
$('.myCheckbox').prop('checked', false);

// jQuery 1.5.x及以下版本选中复选框
$('.myCheckbox').attr('checked', true);

// jQuery 1.5.x及以下版本取消选中复选框
$('.myCheckbox').attr('checked', false);

// 检查复选框是否选中
$('.myCheckbox').is(':checked');

// 切换复选框状态
$(':checkbox').prop('checked', function (i, value) {
return !value;
});

最佳实践

  • 使用现代jQuery的 .prop() 方法,因为它更符合标准,并且在处理动态状态变化时更可靠。
  • 避免使用 .removeAttr('checked') 来取消选中,因为这可能会影响表单重置功能。
  • 如果需要对多个复选框进行操作,可以使用自定义插件或循环遍历的方式。

常见问题

问题1:jQuery 1.6中复选框点击后不响应“checked”属性变化

在用户点击复选框后,该复选框可能会停止响应“checked”属性的变化。
解决方案:使用JavaScript的“checked”属性直接操作DOM元素。

1
2
3
4
// 选中复选框
$('.myCheckbox').each(function(){ this.checked = true; });
// 取消选中复选框
$('.myCheckbox').each(function(){ this.checked = false; });

问题2:如何根据值选中复选框组

在典型的复选框组中,所有输入标签具有相同的名称,但 value 属性不同。可以使用更具体的选择器来实现。

1
$("input.myclass[name='myname'][value='the_value']").prop("checked", true);

使用jQuery设置复选框的“checked”状态
https://119291.xyz/posts/2025-05-09.setting-checked-for-checkbox-with-jquery/
作者
ww
发布于
2025年5月9日
许可协议