原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)

脚本之家小编之前整理不少checkbox全选全不选这方便的文章,但看了这篇以后发现实现方法更好

日常项目中, 对于列表类文章或数据, 大概都会用到checkbox的全选或全不选的功能, 以前的项目中也写过checkbox的选择js, 但都没有整理过. 正好前几天一个兄弟遇到了这个问题, 索性, 我花了点时间, 用原生JS与jQuery分别写了一个版本, 考虑到使用时灵活性问题, 未封装, 需要的童鞋使用时自行改下相关参数.

功能介绍点此查看DEMO演示

1. 全选/全不选 选框一体实现, 即列表中选框的状态与全选/全不选框前的选框状态一致;
2. 自动更改 全选/全不选 选框的状态, 即列表中选框都选中时, 全选/全不选 选框也选中, 反之亦然;
3. 列表行内点击也可选中行内的checkbox, 并与1,2中的功能联动.
另,本文重在写全选, 鼠标划入划出背景变色为简易实现, 更加完善的请参考:

https://www.0133.cn/article/24125.htm

原生JS版本核心代码

html代码

 
原生JS样例
2010-12-12原生JS实现的全选/全不选,点行也可选中或取消
2010-12-12原生JS实现的全选/全不选,点行也可选中或取消
2010-12-12原生JS实现的全选/全不选,点行也可选中或取消
2010-12-12原生JS实现的全选/全不选,点行也可选中或取消
2010-12-12原生JS实现的全选/全不选,点行也可选中或取消

原生js代码

 //原生JS实现全选全不选类 window.onload = function iCheckAll(){ var js_chk = document.forms['js'].chk_can; var jsitems = document.forms['js'].jsitems; var jsrows = document.getElementById('js').getElementsByTagName('dd'); //判断选中个数与实际选框个数实现全选/全不选框的状态 var chk_canle = function(){ var checkedLen = 0; //计算列表中选中状态的选框个数 for (var m = 0; m 

jquery版本核心代码

html代码

 
jQuery样例
2010-12-12基于jQuery的全选/全不选,点行也可选中或取消
2010-12-12基于jQuery的全选/全不选,点行也可选中或取消
2010-12-12基于jQuery的全选/全不选,点行也可选中或取消
2010-12-12基于jQuery的全选/全不选,点行也可选中或取消
2010-12-12基于jQuery的全选/全不选,点行也可选中或取消

jquery核心实现代码

 //jQ实现全选全不选 $(function(){ var _jq_chk = $('#jq>dl>dt>label>:checkbox'); var _jqitems = $(':checkbox[name=jqitems]'); var _rows = $('#jq>dl>dd'); //全选与全不选一体实现 _jq_chk.click(function(){ //列表中选框和全选选框统一状态 _jqitems.add(_jq_chk).attr('checked', this.checked); }); //选框的点击事件 _jqitems.click(function(e){ //阻止冒泡,避免行点击事件中,直接选择选框无效 e.stopPropagation(); //判断选中个数与实际个数是否相同,以确定全选/全不选状态 _jq_chk.attr('checked', _jqitems.size() == _jqitems.filter(':checked').size()); }); //点选行时选中行内的checkbox _rows.bind({ mouseenter: function(){ $(this).addClass('hover'); }, mouseleave: function(){ $(this).removeClass('hover'); }, //点选 click: function(){ //行内点击时,行内的选框状态为原状态取反 $(this).find(':checkbox').attr('checked', !$(this).find(':checkbox').get(0).checked) //判断选中个数与实际个数是否相同,以确定全选/全不选状态 _jq_chk.attr('checked', _jqitems.size() == _jqitems.filter(':checked').size()); } }); });

这个代码比普通的实现代码要多不少,主要表现为点击行就可以实现选择功能。更多的功能更多的代码。大家可以根据需要自行删减。

相信很多做web的人都会遇到一些JS问题,那到底是用JQ来实现还是用JS来实现,常常困扰着我们,但其实JS是通用的,而JQ是建在自己加载的JQ库的,所在真正实现是没有任何区别的。

以上就是原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程