伙计们我有一个功能,当它使用时,它应该检查所有框并取消选中它们。这是最好的
$('#checkAllId').change(function(){
if($(this).attr('checked')){
//uncheck all the checkboxes
$("input[type='checkbox']").each(
function() {
$(this).attr('checked',false);
}
);
}else{
//check all the checkboxes
$("input[type='checkbox']").each(
function() {
$(this).attr('checked',true);
}
);
}
});
然而我改编了这个功能,所以我可以用特定的类来定位特定的复选框。这是改编版
$('#checkAllId').change(function(){
if($(this).attr('checked')){
//uncheck all the checkboxes
$("input.mainobservations:checkbox").each(
function() {
$(this).attr('checked',false);
}
);
}else{
//check all the checkboxes
$("input.mainobservations:checkbox").each(
function() {
$(this).attr('checked',true);
}
);
}
});
这可以检查所有方框,但不能取消选中所有方框。这是为什么?
答案 0 :(得分:0)
您需要使用.prop设置复选框以选中/取消选中而不是.attr
:
$(this).prop('checked',true);
答案 1 :(得分:0)
答案 2 :(得分:0)
假设您使用的是可以访问prop()
的jQuery版本,您应该使用该版本而不是attr()
,我建议使用以下方法:
$('#checkAllId').change(function(){
$('input.mainobservations[type="checkbox"]').prop('checked', this.checked);
});
关于为什么,值得参考jQuery API for the prop()
method:
尽管如此,要记住关于checked属性的最重要的概念是它与checked属性不对应。该属性实际上对应于defaultChecked属性,应仅用于设置复选框的初始值。 checked属性值不会随复选框的状态而改变,而checked属性则会改变。