利用Bootstrap实现表格复选框checkbox全选


Posted in Javascript onDecember 21, 2016

首先来看看实现的效果图:

利用Bootstrap实现表格复选框checkbox全选

利用Bootstrap实现表格复选框checkbox全选

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

<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样式表示。点击复选框所在单元格也能选中复选框。

下面是完整代码和注释说明:

<!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>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言留言交流。

Javascript 相关文章推荐
一些常用的Javascript函数
Dec 22 Javascript
JS IE和FF兼容性问题汇总
Feb 09 Javascript
jquery 插件学习(五)
Aug 06 Javascript
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
jQuery入门介绍之基础知识
Jan 13 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
JS中parseInt()和map()用法分析
Dec 16 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
JS实现针对给定时间的倒计时功能示例
Apr 11 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
vue源码学习之Object.defineProperty对象属性监听
May 30 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
Dec 21 #Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 #Javascript
JS定时器用法分析【时钟与菜单中的应用】
Dec 21 #Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 #Javascript
详解jQuery的表单验证插件--Validation
Dec 21 #Javascript
JS无缝滚动效果实现方法分析
Dec 21 #Javascript
简单实现JS计算器功能
Dec 21 #Javascript
You might like
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
php简单统计在线人数的方法
2016/05/10 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
js replace替换字符串同时替换多个方法
2018/11/27 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
Python中字典的setdefault()方法教程
2017/02/07 Python
Python 加密的实例详解
2017/10/09 Python
python频繁写入文件时提速的方法
2019/06/26 Python
Python-for循环的内部机制
2020/06/12 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
超市业务员岗位职责
2013/12/05 职场文书
个人授权委托书
2014/04/03 职场文书
政风行风整改报告
2014/11/06 职场文书
重温入党誓词主持词
2015/06/29 职场文书
会计实训总结范文
2015/08/03 职场文书
网吧管理制度范本
2015/08/05 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android