2015-02-11 91 views
1

当我选中全局复选框时,我在所有复选框中调用jQuery.click()。我想要禁用一个按钮,如果没有选中正常的复选框。因此,我使用下面的代码来计算复选框的数量。但是当我们手动点击.chkLst时,$(this)已经被检查,当我调用click()函数时,$(this)未被选中。jQuery点击()复选框没有检查复选框,然后运行点击处理程序

$(".grid").on("click", ".chkLst", function() { 
    if($(this).is(":checked")){ 
     deleteBtnDisableCheck++; 
    } else { 
     deleteBtnDisableCheck--; 
    } 
    if (deleteBtnDisableCheck == 0) { 
     $('#btnDeleteLst').addClass("btnDisable"); 
    } else { 
     $('#btnDeleteLst').removeClass("btnDisable"); 
    } 
}); 

$(".grid").on("click", ".chkLstAll", function() { 
    $(".chkLst").each(function() { 
     $(this).click(); 
    }); 
}); 
+3

你应该使用'change'事件 – adeneo 2015-02-11 12:41:38

回答

2
You can do the above operation easily using selector, so you dont require a counter variable. 

//function to call when local checkbox is clicked 

$(".grid").on("click", ".chkLst", function() { 
    callUpdateClassFunction(); 
}); 

//function to call when global checkbox is clicked 

$(".grid").on("click", ".chkLstAll", function() { 
    $(".chkLst").prop('checked',this.checked); 
    callUpdateClassFunction(); 
}); 

//function to update class 

function callUpdateClassFunction(){ 
if($(".chkLst:checked").length > 0){ 
    $('#btnDeleteLst').addClass("btnDisable"); 
} 
else{ 
    $('#btnDeleteLst').removeClass("btnDisable"); 
    } 
}