2015-02-11 94 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"); 
    } 
}