JQ实现表格复选框一列全选
JQ实现表格复选框一列全选
$(document).ready(function(){
var $thr = $('table thead tr');
var $checkAllTh = $('<th><input class="input" type="checkbox" id="checkAll" name="checkAll" lay-skin="primary"/></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" value="{$vo.id}" lay-skin="primary"/></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();
});
/*点击每一行时也触发该行的选中操作*/
})
//复选框样式
input[type='checkbox']{
width: 20px;
height: 20px;
background-color: #fff;
-webkit-appearance:none;
border: 1px solid #c9c9c9;
border-radius: 2px;
outline: none;
cursor:pointer;
}
input[type=checkbox]:checked{
background: url("/static/images/right.png")no-repeat center;
background-size: contain;
}
复选框样式图