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系列之数值计算
Jun 07 Javascript
javascript获取url上某个参数的方法
Nov 08 Javascript
js设置function参数默认值(适合没有传参情况)
Feb 24 Javascript
jquery插件unobtrusive实现片段式加载
Jun 15 Javascript
JS实现带鼠标效果的头像及文章列表代码
Sep 27 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
JavaScript中Promise的使用详解
Feb 26 Javascript
微信小程序 向左滑动删除功能的实现
Mar 10 Javascript
node.js调用Chrome浏览器打开链接地址的方法
May 17 Javascript
微信小程序 数据绑定及运算的简单实例
Sep 20 Javascript
Vue Router的手写实现方法实现
Mar 02 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 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
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
javascript如何创建对象
2016/08/29 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
个人自我鉴定范文
2013/10/04 职场文书
计算机专业毕业生自荐信
2013/12/31 职场文书
幼师自我鉴定
2014/02/01 职场文书
七匹狼男装广告词
2014/03/21 职场文书
法人委托书范本格式
2014/09/15 职场文书
晚会闭幕词
2015/01/28 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
中学校园广播稿
2015/08/18 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电