【问题标题】:jQuery click() on checkbox is not checking checkbox before running click handler复选框上的 jQuery click() 在运行单击处理程序之前未检查复选框
【发布时间】:2015-02-11 12:40:05
【问题描述】:

我在选中全局复选框时,我在所有复选框上调用jQuery.Click()。如果没有选中任何普通复选框,我想禁用一个按钮。因此,我正在使用下面的代码计算选中复选框的数量。但是当我们手动点击 .chkLst 时,$(this) 已经被选中,当我调用 click() 函数时,$(this) 未被选中。

$(".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();
    });
});

【问题讨论】:

  • 你应该使用change事件

标签: javascript jquery checkbox


【解决方案1】:
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");
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    相关资源
    最近更新 更多