您的位置:首页 > Web前端 > BootStrap

Bootstrap之表格checkbox复选框全选

2016-06-12 22:43 531 查看
效果图:





HTML中无需添加额外的一列来表示复选框,而是由JS完成,所以正常的表格布局就行了:

[html] view plain copy

<table class="table table-bordered table-hover">

<thead>

<tr class="success">

<th>类别编号</th>

<th>类别名称</th>

<th>类别组</th>

<th>状态</th>

<th>说明</th>

</tr>

</thead>

<tbody>

<tr>

<td>C00001</td>

<td>机车</td>

<td>机车</td>

<td>有效</td>

<td>机车头</td>

</tr>

<tr>

<td>C00002</td>

<td>车厢</td>

<td>机车</td>

<td>有效</td>

<td>载客车厢</td>

</tr>

</tbody>

</table>

重点是JS的实现。复选框很小,不容易点到,所以点击每一行也可以选中该行,并用高亮一些CSS样式表示。点击复选框所在单元格也能选中复选框。下面是完整代码和注释说明:

[html] view plain copy

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->

<title>表格</title>

<meta name="keywords" content="表格">

<meta name="description" content="这真的是一个表格" />

<meta name="HandheldFriendly" content="True" />

<link rel="shortcut icon" href="img/favicon.ico">

<!-- Bootstrap3.3.5 CSS -->

<link href="css/bootstrap.min.css" rel="stylesheet">

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->

<!--[if lt IE 9]>

<script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>

<script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>

<![endif]-->

</head>

<body>

<div class="panel-group">

<div class="panel panel-primary">

<div class="panel-heading">

列表

</div>

<div class="panel-body">

<div class="list-op" id="list_op">

<button type="button" class="btn btn-default btn-sm">

<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增

</button>

<button type="button" class="btn btn-default btn-sm">

<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改

</button>

<button type="button" class="btn btn-default btn-sm">

<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>删除

</button>

</div>

</div>

<table class="table table-bordered table-hover">

<thead>

<tr class="success">

<th>类别编号</th>

<th>类别名称</th>

<th>类别组</th>

<th>状态</th>

<th>说明</th>

</tr>

</thead>

<tbody>

<tr>

<td>C00001</td>

<td>机车</td>

<td>机车</td>

<td>有效</td>

<td>机车头</td>

</tr>

<tr>

<td>C00002</td>

<td>车厢</td>

<td>机车</td>

<td>有效</td>

<td>载客车厢</td>

</tr>

</tbody>

</table>

<div class="panel-footer">

<nav>

<ul class="pagination pagination-sm">

<li class="disabled">

<a href="#" aria-label="Previous">

<span aria-hidden="true">«</span>

</a>

</li>

<li class="active"><a href="#">1</a></li>

<li><a href="#">2</a></li>

<li><a href="#">3</a></li>

<li><a href="#">4</a></li>

<li><a href="#">5</a></li>

<li>

<a href="#" aria-label="Next">

<span aria-hidden="true">»</span>

</a>

</li>

</ul>

</nav>

</div><!-- end of panel-footer -->

</div><!-- end of panel -->

</div>

<!-- jQuery1.11.3 (necessary for Bo otstrap's JavaScript plugins) -->

<script src="js/jquery-1.11.3.min.js "></script>

<!-- Include all compiled plugins (below), or include individual files as needed -->

<script src="js/bootstrap.min.js "></script>

<script>

$(function(){

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();

});

}

initTableCheckbox();

});

</script>

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: