代码应该禁用一组复选框。有两类复选框,如果我点击一个,它会禁用另一个。问题是如果我改变主意并想要取消选择(取消选中),它就不允许我取消选中。
$(".single-checkbox").click(function(){
if ($(this).prop("checked", "checked")) {
$('.deleteDone').prop('disabled', true);
} else {
// $(this).prop("unchecked", "unchecked")
// $('.deleteDone').prop('disabled', false);
// $(".single-checkbox").prop("checked", false);
}
});
我在声明的其他部分尝试了各种各样的事情,但没有运气。 你有什么想法吗?关于取消选中复选框有几个问题,我尝试了代码中的变体,但没有运气。
任何帮助表示感谢。
答案 0 :(得分:4)
您正在设置值,而不是在if语句中检查它。
if ($(this).prop("checked", "checked")) {
相反,您应该检查是否选中了复选框。
if ($(this).is(":checked")) {
答案 1 :(得分:1)
$(this).prop("checked", "checked")
语句将设置属性checked
的值,而"checked"
将评估为真,它始终为checked
。
可以使用这些陈述,
if(this.checked) {
if($(this).is(":checked")){
if($(this).prop("checked")){
但是,您可以使用脚本
$(".single-checkbox").change(function(){
$('.deleteDone').prop('disabled', this.checked);
});
答案 2 :(得分:0)
$(this).prop("checked", "checked")
确保无论何时点击该复选框都会立即进行检查。
如果要确定选中了复选框,请执行以下操作:
if ($(this).prop("checked"))
解释您在代码中观察到的行为:
if ($(this).prop("checked", "checked")) {
$('.deleteDone').prop('disabled', true);
}
$(this).prop("checked", "checked")
返回一个对象,这是真实的。这意味着$('.deleteDone').prop('disabled', true);
无论何种情况都会被执行。这意味着类deleteDone
的元素总是被禁用。
答案 3 :(得分:0)
我认为点击复选框后,全部复选框将禁用bcoz class .deleteDone
,因此您不允许再次点击。您需要为单击的复选框禁用false
$(".single-checkbox").click(function(){
if ($(this).is(":checked")) {
$('.deleteDone').prop('disabled', true);
// Add this //
$(this).removeAttr('disabled');
} else {
//$(this).prop("unchecked", "unchecked")
//$('.deleteDone').prop('disabled', false);
//$(".single-checkbox").prop("checked", false);
}
});
答案 4 :(得分:0)
$('.single-checkbox, .deleteDone').click(function(){ // if you click any of the classes
var isChecked = $(this).is(':checked'); // true or false
if (isChecked) {
var cbToDisable = $(this).attr('class') == 'single-checkbox' ? 'deleteDone' : 'single-checkbox'; // disable the other class
$(cbToDisable).prop('disabled', isChecked); // do it
}
});