1. 程式人生 > >給表格增加複選框

給表格增加複選框

function initTableCheckbox() {
    var $thr = $('table thead tr');
    var $checkAllTh = $('<th><input type="checkbox" id="checkAll" name="checkAll" /></th>');
    /*將全選/反選複選框新增到表頭最前,即增加一列*/
    $thr.prepend($checkAllTh);
    /*“全選/反選”複選框*/
    var $checkAll = $thr.find('input');
    $checkAll.click(function (event) {
        /*將所有行的選中狀態設成全選框的選中狀態*/
        $tbr.find('input').prop('checked', $(this).prop('checked'));
        /*並調整所有選中行的CSS樣式*/
        if ($(this).prop('checked')) {
            $tbr.find('input').parent().parent().addClass('warning');
        } else {
            $tbr.find('input').parent().parent().removeClass('warning');
        }
        /*阻止向上冒泡,以防再次觸發點選操作*/
        event.stopPropagation();
    });
    /*點選全選框所在單元格時也觸發全選框的點選操作*/
    $checkAllTh.click(function () {
        $(this).find('input').click();
    });
    var $tbr = $('table tbody tr');
    var $checkItemTd = $('<td><input type="checkbox" name="checkItem" /></td>');
    /*每一行都在最前面插入一個選中複選框的單元格*/
    $tbr.prepend($checkItemTd);
    /*點選每一行的選中複選框時*/
    $tbr.find('input').click(function (event) {
        /*調整選中行的CSS樣式*/
        $(this).parent().parent().toggleClass('warning');
        /*如果已經被選中行的行數等於表格的資料行數,將全選框設為選中狀態,否則設為未選中狀態*/
        $checkAll.prop('checked', $tbr.find('input:checked').length == $tbr.length ? true : false);
        /*阻止向上冒泡,以防再次觸發點選操作*/
        event.stopPropagation();
    });
    /*點選每一行時也觸發該行的選中操作*/
    $tbr.click(function () {
        $(this).find('input').click();
    });
}