您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
SpringBoot 发布于2019年11月23日 21:08

使用jQuery如何检测一个复选框是否被选中?

2771 次浏览 读完需要≈ 1 分钟 JavaScriptjQuery

在jQuery中,怎样才能检测一个复选框 checkbox 是否被选中呢?

在原生的 JavaScript 中,我倒是知道的:可以使用 document.getElementById("myId").checked 来判断。

但是在 jQuery 中,感觉还不太熟额。

2 个回答

Ready · 4年前

你应该使用 prop() 方法来操作节点元素上的原生属性。

$("#myId").prop('checked') // true 或 false

如果是 jQuery 1.6 之前的版本,那么你可以使用 attr() 方法(因为之前版本没有prop()方法,如果有的话,就务必优先使用):

$("#myId").attr('checked') // true 或 false

此外,上述方法检测的是单个复选框是否选中。复选框一般是一组(多个)的,如果需要检测是否至少有一个复选框被选中,那么可以使用下面的代码:

// $elements 表示一组复选框的jQuery对象
function isAnyChecked( $elements ) {
	var checked = false;
	$elements.each(function () {
		if (this.checked) {
			checked = true;
			return false; // 中断遍历
		}
	});
	return checked;
}

// 也可以使用如下判断(选中的元素个数 大于 0):
$elements.filter(':checked').length > 0

如果你需要检测所有的复选框都被选中,那么你可以使用如下代码:

// $elements 表示一组复选框的jQuery对象
function isAllChecked( $elements ) {
	var checked = 0;
	$elements.each(function () {
		if (this.checked) {
			checked = 1;
		} else {
			checked = -1;
			return false; // 中断遍历
		}
	});
	return checked === 1;
}


// 也可以使用如下判断(选中的元素个数 等于 所有元素的个数):
$elements.filter(':checked').length === $elements.length

已采纳 ? 0 0 0 编辑
$('#myId').attr('checked')

撰写答案