JS全选功能代码优化
原文:JS全选功能代码优化

JS全选功能代码优化

最近在看javascript MVC那本书,也感觉到自己写的代码也并不优雅,所以一直在想 用另一种模式来编写JS代码,所以针对之前的简单的JS全选功能来做个简单的demo,使用目前现在的编码方式来重新编码,当然以后会一直用这种方式来编写自己的代码。下面是如下代码:

JS所有代码:

/*** JS全选* @class Checkall* @param {Object} cfg* @param {Element|selector} [cfg.container] 限定全选的容器* @param {selector} cfg.checkAll 全选框* @param {selector} cfg.checkItem 子选框*/function CheckAll(cfg,callback) {var self = this;this.config = cfg;this.container = $(cfg.container) || document.body;// 全选自定义事件this.container.delegate(cfg.checkAll,'change',function(e){$(e.target).trigger('checkAllChange');});// 单选自定义事件this.container.delegate(cfg.checkItem,'change',function(e){$(e.target).trigger('checkItemChange');});// 全选操作this.container.delegate(cfg.checkAll,'checkAllChange',function(e){var checked = self.isItemChecked(e.target);self._checkAll(checked);// 选中所有子节点
        self._AllChildrenChecked(checked);callback && $.isFunction(callback) && callback(self);});// 单选操作this.container.delegate(cfg.checkItem,'checkItemChange',function(e){// 检查是否所有子节点都选中了if( self._isChildrenChecked()){self._checkAll(true);}else {self._checkAll(false);}callback && $.isFunction(callback) && callback(self);});};$.extend(CheckAll.prototype,{/** 选中单个checkbox* @param item* @param _isCheck*/_checkItem: function(item, _isCheck ){item = $(item);item.prop('checked', _isCheck);},/** 选中/反选所有的 全选按钮* @method _checkAll {private}* @param {Boolean} _isCheck*/_checkAll: function(_isCheck){var self = this;this.container.find(self.config.checkAll).each(function(index,item){var isAllChecked = self.isItemChecked(item);if(isAllChecked !== _isCheck) {self._checkItem(item,_isCheck);}});},/** 选中/反选 所有的子节点* @method _AllChildrenChecked {private}*/_AllChildrenChecked: function(_isCheck){var self = this;this.container.find(this.config.checkItem).each(function(index,item){var itemChecked = self.isItemChecked(item);if( itemChecked !== _isCheck){self._checkItem(item, _isCheck);}});},/** 是否所有的子节点都选中了*/_isChildrenChecked: function(){var isCheckAll = true;var self = this;this.container.find(this.config.checkItem).each(function(index,item){if(!self.isItemChecked(item)) {isCheckAll = false;}});return isCheckAll;},/** 检查一个元素是否被选中*/isItemChecked: function(item) {return $(item).is(":checked");},/** 获取被选中的所有值 或者 属性 存入数组* @todo 比如想获取选中所有项的id或者其他所有项的属性等操作* @method getValues {public} * @param {elems,attr} 元素所有的dom节点 获取元素对应的属性值* @return 返回数组 {rets}*/getValues: function(elems,attr) {var self = this,rets = [];$(elems).each(function(index,item){var isboolean = self.isItemChecked(item);if(isboolean && $(item).prop(attr)) {var curAttr = $(item).prop(attr);rets.push(curAttr);}});return rets;}});

HTML代码如下:

<div class="check-list"><hr><div class="J_CheckListContainerBasic"><h4>基本使用</h4><div class="check-all"><label>全选 <input type="checkbox" class="J_CheckAll"></label><ul class="sub-checkbox"><li><label>选中 <input type="checkbox" class="J_CheckItem" value="1"></label></li><li><label>选中 <input type="checkbox" class="J_CheckItem" value="2"></label></li><li><label>选中 <input type="checkbox" class="J_CheckItem" value="3"></label></li></ul></div></div>
</div>

JS初始化如下:

var checkAll=  new CheckAll({container: '.J_CheckListContainerBasic',checkAll: '.J_CheckAll',checkItem: '.J_CheckItem'},function(){console.log(checkAll.getValues('.J_CheckItem',"value"));});

当然为了查看效果,我也提供了JSFIddler地址 供预览:

JS全选功能演示

posted on 2014-06-26 10:38 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/3809573.html

JS全选功能代码优化相关推荐

  1. 暑期学习日记34:js全选功能

    今天学习了使用js实现全选功能,点击全选的复选框后会将下面所有的复选框变为被选择状态. 代码如下: <!doctype html> <html> <head> &l ...

  2. 【javascript】js实现表格全选功能

    效果: 一个表格 实现单选功能和全选功能. <!DOCTYPE html> <html lang="en"> <head><meta ch ...

  3. jQuery之全选功能

    例子:点击全选,将所有checkbox选中. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  4. layui table 全选过滤_layui表格(表单)的全选功能

    最近在使用layui这个框架,其中有用到表格的全选功能,下面记录下我的使用.html文件需要引用的是layui.js和layui.css,但是上面两个文件又会引入其他文件.,如图所示, 所以建议从la ...

  5. 微信小程序实现单选、全选功能

    前言概述 本文介绍微信小程序实现单选.全选功能,效果如下: 实现过程 1.先实现页面效果,文件*.wxml和*.wxss代码如下: <view class="container&quo ...

  6. layui表格监听全选_layui表格(表单)的全选功能

    最近在使用layui这个框架,其中有用到表格的全选功能,下面记录下我的使用.html文件需要引用的是layui.js和layui.css,但是上面两个文件又会引入其他文件.,如图所示, 所以建议从la ...

  7. java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

    这篇文字将要学习以下知识点: 1.如何给JButton按钮添加鼠标点击事件监听器 #1.addMouseListener(MouseListener l)  给JButton添加一个鼠标点击监听器l ...

  8. 点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能

    最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标.点击屏幕除地址栏其他位置时,键盘隐藏,隐藏光标. 大部分浏览器都是这样的逻辑,这样可以提高用户体验, ...

  9. vue element ui下拉菜单和不是table列表全选功能问题解决方案

    这半个月都在折腾vue的项目,虽然不是很复杂,但对于刚入门的小白来说,踩到的坑不少,常常因为一个小问题就得浪费好久问题,不过娃不在身边,晚上和周末可以继续研究,趁睡觉前,把今天遇到的问题给总结一下,做 ...

最新文章

  1. 近六成员工强烈支持,携程将推出“3+2 ”工作模式,一周三天到岗两天在家办公...
  2. 时间字段 oracle 经验 设计,数据库设计与优化
  3. Google服务完整清单
  4. 青蛙学Linux—高性能负载均衡集群软件LVS
  5. java操作mongodb_Java操作MongoDB
  6. java编写螺旋矩阵讲解_Java如何实现螺旋矩阵 Java实现螺旋矩阵代码实例
  7. Oracle 20c 新特性:DIAGNOSTICS_CONTROL 对诊断事件的安全管控
  8. 求树的直径(两种方法)
  9. SQL注入学习part05:(结合sqli-libs学习:41-50关)
  10. Skype for Business Server 2015-13-IISARR-2-发布-2-前端服务器
  11. php手动删除变量函数,PHP unset()函数销毁变量_PHP教程
  12. Silverlight 3.0正式版RTW的发布日期
  13. ★★★★★手把手教你如何利用凤凰实现破 解后台权限以及升级固件(刷机)★★★★★...
  14. 深度linux双显卡死机,Deepin配置IntelNvidia双显卡
  15. steam linux 安装目录,如何在Ubuntu中安装Steam | MOS86
  16. 饼图的属性和南丁格尔双图并列显示
  17. C++ 开源密码库之OpenSSL的使用
  18. 在matlab用泰勒级数求,急 在matlab中写个用泰勒级数计算arctan(x)的方程
  19. Qml控件之Calendar日历
  20. 分享几款DIY的手表

热门文章

  1. ElasticSearch安装过程中遇到的一些问题
  2. BZOJ 2957 楼房重建 (分块)
  3. 提升你的开发效率,10 个 NPM 使用技巧
  4. linux下搭建FTP服务器
  5. [置顶]       cocos2d-x 手游源码站
  6. 61条Java面向对象设计的经验原则
  7. Django中--使用redis存储历史浏览记录
  8. oracle索引分类与区分,深入理解Oracle表(6):堆组织表(HOT)和索引组织表(IOT)的区别...
  9. 伤疤好了有黑印怎么办_春藤家长圈|家有二孩,老大老二一起抢东西,家长该怎么办?...
  10. 机器学习之拉格朗日乘子法和 KKT