效果图:


HTML中无需添加额外的一列来表示复选框,而是由JS完成,所以正常的表格布局就行了:
- <table?class="table?table-bordered?table-hover">??
- ????thead>??
- ????????tr?class="success" ????????????th>类别编号</ ????????????>类别名称>类别组>状态>说明tr ????tbody ????????td>C00001>机车>有效>机车头>C00002>车厢>载客车厢table>??
重点是JS的实现。复选框很小,不容易点到,所以点击每一行也可以选中该行,并用高亮一些CSS样式表示。点击复选框所在单元格也能选中复选框。下面是完整代码和注释说明:
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" ??????????
- 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" ??
- ??????????
- ????????<!--[if?lt?IE?9]script?src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js">scriptscript?src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js" ????????<![endif]--bodydiv?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 ???????????????????????? ????????????????????????????span?class="glyphicon?glyphicon-pencil"?aria-hidden="true">修改??
- span?class="glyphicon?glyphicon-remove"?aria-hidden="true">删除??
- ????????????????????div?class="panel-footer"navul?class="pagination?pagination-sm"li?class="disabled" ????????????????????????????????a?href="#"?aria-label="Previous" ????????????????????????????????????span?aria-hidden="true">?alili?class="active"a?href="#">1>2>3>4>5a?href="#"?aria-label="Next">?ul>??
- <!--?end?of?panel?-->??
- <!--?jQuery1.11.3?(necessary?for?Bo?otstrap's?JavaScript?plugins)?-->??
- script?src="js/jquery-1.11.3.min.js?"<!--?Include?all?compiled?plugins?(below),?or?include?individual?files?as?needed?-->??
- script?src="js/bootstrap.min.js?" ????????$(function(){??
- ????????????function?initTableCheckbox()?{??
- ????????????????var?$thr?=?$('table?thead?tr');??
- ????????????????var?$checkAllTh?=?$('input?type="checkbox"?id="checkAll"?name="checkAll"?/>>');??
- ????????????????/*将全选/反选复选框添加到表头最前,即增加一列*/??
- ????????????????$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?=?$('input?type="checkbox"?name="checkItem"? ????????????????/*每一行都在最前面插入一个选中复选框的单元格*/??
- ????????????????$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();??
- ????????});??
- html>
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|