JQuery实现列表中复选框全选反选功能封装(推荐)


Posted in Javascript onNovember 24, 2016

我们在做列表的时候经常会遇到全选,反选进行批量处理问题,例如:

JQuery实现列表中复选框全选反选功能封装(推荐)

我当时就是简单的实现了,然后想封装到公共的js中,封装的太烂,不好意思贴出来了(就是把实现代码之间放到公共js中,然后每个页面都用固定的id,class,现在想想我都不好意思叫他封装了),然后想到之前老大有写过这个功能去看下他怎么写的,真是没有对比就没有伤害啊,这才叫封装;

$(':checkbox[data-check-target]').click(function () {
var target = $(this).attr('data-check-target');
if ($(this).prop('checked')) {
$(target).prop('checked', true);
} else {
$(target).prop('checked', false);
}
});

首先这儿的高封装性就体现出来了,只有一个自定义的data-check-target属性用于js和html分离后的连接桥梁(而我当时用两个:一个全选复选框,一个子复选框,有关的点都用上了,这样就没起到封装的效果,js和html耦合性太大)(我看到上面的js就在想怎么通过一个连接点把三个相关联的东西联系起来的呢);

接下来我们继续看具体使用的地方:

JQuery实现列表中复选框全选反选功能封装(推荐)

我发现全选复选框用于和js链接的桥梁的自定义属性data-check-target有点特别:

<input type="checkbox" data-check-target=".id-checkbox" />

它的值为“.id-checkbox”,看起来就感觉好奇怪,继续往下看子复选框实现:

<input type="checkbox" name="ids[]" value="@item.Id" class="id-checkbox" />

到这儿才豁然开朗原来子复选框的class名称就存放在自定义属性data-check-target中;

var target = $(this).attr('data-check-target');

然后再通过自定义属性data-check-target拿到子复选框的class,从而达到高封装性;

我总结的就是js和html通过了自定义属性data-check-target通信,子复选框依赖全选复选框自定义属性data-check-target的值;

这个例子看下来代码不难,也没有什么地方很难理解的,就是通过一个自定义属性巧妙的完成了低耦合的封装,这也是正是这段代码的难点和精髓;

我真心抑制不住内心的崇拜,这几行代码太漂亮了。

PS:上面js为什么用prop而不用attr,因为:如果当前input中初始化未定义checked属性,则该元素没有指定的checked属性,所以.attr()会返回undefined;

对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。

对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。

以上所述是小编给大家介绍的JQuery实现列表中复选框全选反选功能封装(推荐),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript的面向对象(二)
Nov 09 Javascript
innerHTML,outerHTML,innerTEXT三者之间的区别
Jan 28 Javascript
js继承 Base类的源码解析
Dec 30 Javascript
JavaScript中几种排序算法的简单实现
Jul 29 Javascript
AngularJS实用开发技巧(推荐)
Jul 13 Javascript
前端弹出对话框 js实现ajax交互
Sep 09 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
微信小程序-getUserInfo回调的实例详解
Oct 27 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
Jan 23 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 #Javascript
JS 终止执行的实现方法
Nov 24 #Javascript
JS/jQuery判断DOM节点是否存在的简单方法
Nov 24 #Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 #Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 #Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 #Javascript
纯javascript版日历控件
Nov 24 #Javascript
You might like
PHP使用递归生成文章树
2015/04/21 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
2020/02/10 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
微信JS接口大全
2016/08/25 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
[30:37]【全国守擂赛】第三周擂主赛 Dark Knight vs. Leopard Gaming
2020/05/04 DOTA
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python生成器以及应用实例解析
2018/02/08 Python
python根据多个文件名批量查找文件
2019/08/13 Python
python 实现多线程下载视频的代码
2019/11/15 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
党校自我鉴定范文
2013/10/02 职场文书
团队精神演讲稿
2013/12/31 职场文书
爱耳日活动总结
2014/04/30 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
2014年学雷锋活动总结
2014/06/26 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Java实现注册登录跳转
2022/06/16 Java/Android
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript