Check all checkboxes in asp.net Gridview jQuery

Toggle all checkboxes in tbody td by clicking on the checkbox in thead in gridview or table in asp.net

by ravimallya

HTML

<table class="mGrid" id="ContentPlaceHolder1_grdInvited" style="border-collapse:collapse;" cellspacing="0">
    <tbody>
        <tr>
            <th scope="col" style="width:5.5%;">
                <input id="checkAll" name="ctl00$ContentPlaceHolder1$grdInvited$ctl01$chkHdrQtn" type="checkbox" >
            </th>
            <th scope="col" style="width:12%;">Resume</th>
            <th class="AlignLeft" scope="col" style="width:14.5%;"><a href="#">Name</a>

            </th>
            <th class="AlignLeft" scope="col" style="width:38.5%;"><a href="#">Email</a>

            </th>
            <th class="AlignLeft" scope="col"><a href="#">Phone</a>

            </th>
            <th scope="col"><a href="#">Invited Date</a>

            </th>
        </tr>
        <tr>
            <td>
                <input id="ContentPlaceHolder1_grdInvited_chkSelect_0" checked name="ctl00$ContentPlaceHolder1$grdInvited$ctl02$chkSelect" onclick="checkSelect(this);" type="checkbox" class="selectMe">
            </td>
            <td>
                <div id="ContentPlaceHolder1_grdInvited_UpdatePanel2_0">
                    <input name="ctl00$ContentPlaceHolder1$grdInvited$ctl02$imgInvitedIcon" id="ContentPlaceHolder1_grdInvited_imgInvitedIcon_0" disabled="disabled" title="Resume not uploaded" class="aspNetDisabled" src="http://placehold.it/30x30/" type="image">
                </div>
            </td>
            <td class="AlignLeft"> <a id="ContentPlaceHolder1_grdInvited_lBtnEditCandidate_0" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$grdInvited$ctl02$lBtnEditCandidate','')">fgfdg</a>

            </td>
            <td class="AlignLeft"> <span id="ContentPlaceHolder1_grdInvited_lblEmail_0">[email protected]</span>

            </td>
            <td class="AlignLeft"> <span id="ContentPlaceHolder1_grdInvited_lblPhone_0"></span>

            </td>
            <td>27 Nov 13</td>
        </tr>
        <tr class="alt">
            <td>
                <input...

CSS

.actions {
    display:none;
}

JavaScript

$(function () {
    
 
    // Just pass the gridview id or class name where it has checkbox in header as well as in each row.
    var grd = $('.mGrid'); 
    
    var headChk = grd.find('th>input:checkbox');
    var checks = grd.find('td>input:checkbox');
    var checkednum = $(checks).not(':checked').length
     $('#txtCounts').val(checkednum);
    $(headChk).change(function () {
     
        $(checks).prop('checked', $(this).prop('checked'));
        if(grd.find("td>input:checkbox:checked").length ==  grd.find("td>input:checkbox").length) {            
           $('#txtCounts').val($(checks).not(':checked').length);
        } else {
          $('#txtCounts').val($(checks).length);
            
        }
    });
    // to check or unchect top selector
    $(checks).change(function () {
        var bol = grd.find("td>input:checkbox:checked");
        var b = grd.find("td>input:checkbox");
        var a = bol.length;
        var c = (b.length);
        //  if ($(checks).length == $("checks:checked").length) 
        if (a == c) {
            $(headChk).prop("checked", true);
        } else {
            $(headChk).prop("checked", false);
        }
 
        if(a >= 1) {  
 $('#txtCounts').val($(checks).not(':checked').length);            
        } else {
   $('#txtCounts').val($(checks).length);
        }
    });
});