利用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 相关文章推荐
再谈IE中Flash控件的自动激活 ObjectWrap
Mar 09 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
Jul 15 Javascript
jquery $.ajax相关用法分享
Mar 16 Javascript
JQueryEasyUI datagrid框架的进阶使用
Apr 08 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
May 19 Javascript
JQuery的$命名冲突详细解析
Dec 28 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
限制只能输入数字的实现代码
May 16 Javascript
Highcharts学习之坐标轴
Aug 02 Javascript
详解JS去重及字符串奇数位小写转大写
Dec 29 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
bootstrap table插件的分页与checkbox使用详解
Jul 23 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
jquery.lazyload  实现图片延迟加载jquery插件
2010/02/06 Javascript
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
2014/09/26 NodeJs
JS上传图片前实现图片预览效果的方法
2015/03/02 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
Python守护线程用法实例
2017/06/23 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python双链表原理与实现方法详解
2020/02/22 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
python实现图片素描效果
2020/09/26 Python
详解python的变量缓存机制
2021/01/24 Python
项目资料员岗位职责
2013/12/10 职场文书
写演讲稿要注意的六件事
2014/01/14 职场文书
试用期员工考核制度
2014/01/22 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python