在jQuery中,怎样才能检测一个复选框 checkbox 是否被选中呢?
在原生的 JavaScript 中,我倒是知道的:可以使用 document.getElementById("myId").checked 来判断。
但是在 jQuery 中,感觉还不太熟额。
在jQuery中,怎样才能检测一个复选框 checkbox 是否被选中呢?
在原生的 JavaScript 中,我倒是知道的:可以使用 document.getElementById("myId").checked 来判断。
但是在 jQuery 中,感觉还不太熟额。
你应该使用 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
$('#myId').attr('checked')