HTML实现checkbox全选/取消与子类监听
来源:互联网 发布:ubuntu安装libapu 编辑:程序博客网 时间:2024/06/05 15:41
在前端开发的过程中,特别是数据表格的处理,我们经常碰到checkbox全选与取消以及动态的根据子类的选中状态确定全选checkbox是否“checked”
全选与取消全选
现在有如下的表格,有三个tab account,drive,qing,每个tab下面的数据结构大同小异
我们希望点击表头的checkbox实现下方数据的全选和取消,实现方式相对比较简单,思路是我们对thead中的checkbox设置监听,当他的状态为checked=true的时候,则表格中其他的checkbox的状态也为checked,反之则是false,实现代码如下
//全选与取消全选let ischecked = false;function ischeckall() { if (ischecked) { $('div.active input[type="checkbox"]').each(function () { this.checked = false; }); ischecked = false; }else { $('div.active input[type="checkbox"]').each(function () { this.checked = true; }); ischecked = true; }}
实现的结果如下gif所示:
根据tbody-checkbox设置thead-checkbox的状态
当然我们实现这个功能还是不够的,考虑以下2个常用场景,
场景1:如果用户在全选完之后,把tbody中的部分行数据“取消”了选中;
场景2:用户通过手动点击行内的checkbox最终实现了“全选”的状态;
显然我们的上述代码是无法做到这个需求的,这时候就得需要对tbody中的checkbox设置监听,先说思路,我们监听tbody中的checkbox,检测到他的状态有“change”,那么这个时候我们就获取当前tbody中有多少行数据得到一个total_val,然后再获取checkbox状态为“checked”的input有多少得到exact_val,通过对比这两个值是否相等,再设置thead中的checkbox的状态。据前端大佬指导,根据后台返回的数据量进行比对效率更高,博主这种直接获取dom的实现方式比较low,大家可以自行选择。
function listencheckbox() { $('div tbody input[type="checkbox"]').on('change', function () { //总量 let total = $('div.active tbody input[type="checkbox"]').length; //实际被选中的 let exact = $('div.active tbody input[type="checkbox"]:checked').length; //检测所有的check选项的有多少与总量进行对比 $('div.active thead input[type="checkbox"]').get(0).checked = (total === exact); });}
这段代码的意思是当“数据渲染完成”之后,对三个tab(account, drive, qing)下面的所有的tbody中的checkbox都设置了同样的监听事件,当这种checkbox状态改变时,注意,这里我只会获取当前tab页面上的checkbox的数量,也就是选择器中为“active”的,这样就避免了对其他两个tab(非active)表格的影响,最后设置当前active页面的thead的checkbox的属性。最终的实现效果如下gif所示:
- HTML实现checkbox全选/取消与子类监听
- html checkbox 实现全选/取消全选
- jquery实现checkbox的全选与取消
- checkbox全选与取消全选
- checkbox全选与取消全选
- 实现全选和取消全选(JavaScript控制CheckBox 的全选与取消全选)
- Javascript实现CheckBox的全选与取消全选的代码
- Javascript实现CheckBox的全选与取消全选的代码
- Javascript实现CheckBox的全选与取消全选的代码
- jquery实现checkbox全选、取消全选
- Jquery 实现checkbox全选/取消全选
- jquery 实现checkbox全选、取消全选功能
- JQuery实现checkbox全选和取消全选
- zTree:实现checkbox、全选、取消全选功能
- JavaScript - CheckBox 全选与取消全选
- checkbox的全选与取消全选
- 提供 CheckBox 全选与取消全选程序
- input checkbox 全选与取消全选
- 面向对象程序设计上机练习十二(运算符重载)
- (实验3-1)Point类的构造函数
- 基本数据类型
- selenium和三大浏览器驱动下载地址
- lede编译freeradius2时遇到的错误解决方法
- HTML实现checkbox全选/取消与子类监听
- 第10章 开发板做站点
- 【智能医疗】人工智能+医疗为何备受资本青睐?这三大场景将先行落地
- 启动tomcat 报错ASM ClassReader failed to parse class file
- 9.Python入门之递归
- 替换为右侧最大值-LintCode
- 解决Chrome不支持NPAPI插件的方法(贴吧旺旺等)
- XUtils 简单实现
- java 多线程之内存可见性