日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS全选功能代码优化

發布時間:2023/12/20 javascript 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS全选功能代码优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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全选功能代码优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。