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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS全选功能代码优化

發(fā)布時(shí)間:2023/12/20 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS全选功能代码优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JS全選功能代碼優(yōu)化 原文:JS全選功能代碼優(yōu)化

JS全選功能代碼優(yōu)化

? ? 最近在看javascript MVC那本書,也感覺到自己寫的代碼也并不優(yōu)雅,所以一直在想 用另一種模式來編寫JS代碼,所以針對(duì)之前的簡單的JS全選功能來做個(gè)簡單的demo,使用目前現(xiàn)在的編碼方式來重新編碼,當(dāng)然以后會(huì)一直用這種方式來編寫自己的代碼。下面是如下代碼:

?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);// 選中所有子節(jié)點(diǎn) self._AllChildrenChecked(checked);callback && $.isFunction(callback) && callback(self);});// 單選操作this.container.delegate(cfg.checkItem,'checkItemChange',function(e){// 檢查是否所有子節(jié)點(diǎn)都選中了if( self._isChildrenChecked()){self._checkAll(true);}else {self._checkAll(false);}callback && $.isFunction(callback) && callback(self);});};$.extend(CheckAll.prototype,{/** 選中單個(gè)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);}});},/** 選中/反選 所有的子節(jié)點(diǎn)* @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);}});},/** 是否所有的子節(jié)點(diǎn)都選中了*/_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;},/** 檢查一個(gè)元素是否被選中*/isItemChecked: function(item) {return $(item).is(":checked");},/** 獲取被選中的所有值 或者 屬性 存入數(shù)組* @todo 比如想獲取選中所有項(xiàng)的id或者其他所有項(xiàng)的屬性等操作* @method getValues {public} * @param {elems,attr} 元素所有的dom節(jié)點(diǎn) 獲取元素對(duì)應(yīng)的屬性值* @return 返回?cái)?shù)組 {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"));});

當(dāng)然為了查看效果,我也提供了JSFIddler地址 供預(yù)覽:

JS全選功能演示

posted on 2014-06-26 10:38 NET未來之路 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/3809573.html

總結(jié)

以上是生活随笔為你收集整理的JS全选功能代码优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。