JavaScript练习三之简易表格排序
来源:互联网 发布:2017网络教育多少钱 编辑:程序博客网 时间:2024/05/29 09:02
项目中有要用到对表格进行排序的操作,比如现价,涨幅等等,之前的想法很简单,点一下表头,然后清空,再对这些数据进行重新排序,最后再渲染一遍,非常麻烦。后来转念一想,DOM节点也是对象啊,似乎可以也可以排序,试了一下,bingo!
感悟 : 改变思维,快速排序
// @charset "utf-8"; /** * 表格排序(练习) * @author 应杲臻(yinggaozhen@myhexin.com) * @create 2015-11-12 09:34 */ (function($, window) { var ext = 'gSort'; var bodyItemSuffix = 'bdData'; var defaultOptions = { sortHeadDom : '', sortBodyDom : '', sortHeadTag : 'g_sort_tag', sortBodyItem : 'tr', onLoadSort : 'desc', defaultClassSortMap : { 'up' : 'asc', 'down' : 'desc' } } function isExsitDom(o) { return $(o).length > 0 ? true : false; } var gSort = function(options) { var me = this, options = $.extend({}, defaultOptions, options); if (!isExsitDom(options.sortBodyDom) || !isExsitDom(options.sortHeadDom)) return; me.options = options; return me; }; gSort.prototype = { init : function() { var me = this; me.$hEl = $(me.options.sortHeadDom); me.$bEl = $(me.options.sortBodyDom); me.recordBodyItems(); me.bindHeadTagClickEvt(); return me; }, recordBodyItems : function() { var me = this; if (typeof me.$bEl.data(bodyItemSuffix) == 'undefined') { var $bodyItems = me.$bEl.find(me.options.sortBodyItem); if (!isExsitDom($bodyItems)) return; me.$bEl.data(bodyItemSuffix, $bodyItems); } return me; }, bindHeadTagClickEvt : function () { var me = this, headTag = me.options.sortHeadTag || ''; var $tagHeads = me.$hEl.find('[' + headTag + ']'); if (!isExsitDom($tagHeads)) return; $tagHeads.unbind().bind('click', function() { var $choseHead = $(this), tagIndex = $choseHead.parent().index(); me.gSort(tagIndex, me.opearteHeadStatus($choseHead, 'change')); }) }, opearteHeadStatus : function(o, opearte) { var me = this, opearte = opearte || 'get'; if (opearte == 'change') { var status = me.opearteHeadStatus(o); status == 'down' ? o.find('i').attr('class', 'up') : o.find('i').attr('class', 'down'); return status; } return o.find('i').attr('class') || ''; }, gSort : function(index, sortRule) { var me = this, sortRule = me.options.defaultClassSortMap[sortRule] || 'asc', $reDta = me.$bEl.data(bodyItemSuffix); var sortSymbol = sortRule == 'asc' ? 1 : -1; $reDta.sort(function(a, b) { var cpreA = me.getCpreDta(a, index), cpreB = me.getCpreDta(b, index); if (cpreA > cpreB) return 1 * sortSymbol; if (cpreA < cpreB) return -1 * sortSymbol; return 0; }); me.$bEl.html($reDta); }, getCpreDta : function(o, index) { return parseFloat($(o).find('td').eq(index).text()); } } return window[ext] = gSort; })($, window);
0 0
- JavaScript练习三之简易表格排序
- JavaScript练习四之简易表单验证
- javascript 学习笔记之表格排序
- CSS练习三之渐变、文本格式化、表格
- javascript操作表格排序
- javaScript 实现表格排序
- Javascript表格排序
- JavaScript实现表格排序
- javascript表格排序
- JavaScript表格排序
- javascript表格列排序
- javascript页面表格排序
- javascript表格排序
- JavaScript实现表格排序
- JavaScript表格排序
- javascript页面表格排序
- JavaScript实现表格排序
- javascript 表格前端排序
- 去掉数据库中date类型的日期数据导出到Excel后多余的 0:00:00
- 关于多媒体流
- 在Eclipse中导出.war包
- js正则表达式语法
- 使用中文域名的优缺点分析
- JavaScript练习三之简易表格排序
- cocostudio1.6UI编辑器中动画使用 cocos2dx3.3 播放问题记录
- 蓝牙配置 uart pskey
- android-Capturing Photos
- STL basic_string, string, wstring, tstring
- 编译原理之扫描器(二)
- 毕业两年,写给自己吧
- IBM System 服务器做RAID步骤
- iOS中JSONModel的使用