双击锁定,单击排序的js实现
来源:互联网 发布:红蜘蛛软件卸载不了 编辑:程序博客网 时间:2024/05/01 02:57
使用方法见最后的demo
var CC = {};(function() { var cSort = function() { this.sortList = {}; this.clickTaskId; this.curTask = 0; // 1 click, 2 dblclick this.sortFunc = function(){}; this.curOrder = 1; }; var Field = function(field, order) { this.field = field; this.sort = 0; // 0 asc, 1 desc this.order = order; this.lock = 0; // 0 unlock, 1 lock this.sortImg = ""; this.lockImg = ""; }; cSort.prototype = { sortImg : [], lockImg : [], delay : 500, click : function(field, str) { var sort = this; if ("db" == str) { sort.dbclick(field); } else { sort.clickTaskId = setTimeout(function() { // 有正在执行的排序 if(sort.curTask != 0) return; var o = sort.sortList[field]; // lock状态 if(o.lock == 1) return; sort.curTask = 1; o.sort = 1 - o.sort; //o.lockImg = cSort.sortImg[o.sort]; sort.sortFunc(); o.order = sort.curOrder ++; sort.curTask = 0; }, cSort.delay); } }, dbclick : function(field) { var sort = this; if(sort.curTask != 0) return; clearTimeout(sort.clickTaskId); sort.curTask = 2; var o = sort.sortList[field]; o.lock = 1 - o.lock; // o.lockImg = cSort.lockImg[o.lock]; // 执行排序 sort.sortFunc(); o.order = sort.curOrder ++; sort.curTask = 0; }, add : function(field, order) { var obj = new Field(field, order); this.sortList[field] = obj; return this; }, addDone : function() { for(key in this.sortList) { this.curOrder ++; } }, setSortFunc : function(func) { this.sortFunc = func; }, getSortResult : function() { var list = this.sortList; var result = ""; var lastMax = 999999; var temp; var temp2; // 遍历list.length的次数,每次取出剩余中order最大的 for(key in list) { // 初始化order为最小值 temp = new Field("-1", "-1"); // 依次和list中的元素比较,如果list中的元素的order值小于lastMax(上一次取出的最大值),则赋给temp for(key2 in list) { temp2 = list[key2].order; if(temp2 < lastMax && temp2 > temp.order) temp = list[key2]; } // temp是剩余中order最大的元素 lastMax = temp.order; // 设置返回的字符串格式 result += temp.field + "," + temp.order + "," + temp.lock + ";"; } return result; } } // ba yin yong gei wai bu bian liang CC.initSort = function(v) { return new cSort(); }})();function cprint(info) { console.log(info);}function demo() { //<a id="11" onclick="CSORT.click('11')" ondblclick="CSORT.click('11', 'db')">11</a> var CSORT = CC.initSort(); CSORT.add("11", 1).add("22", 2).add("33", 3).addDone(); CSORT.setSortFunc(function(){}); CSORT.getSortResult(); // 格式:field,order,lock;}
0 0
- 双击锁定,单击排序的js实现
- 实现对view的单击双击监听
- UIView 实现单击和双击的区别
- 通过js实现单击或双击直接修改内容
- 通过js实现单击或双击直接修改内容
- js 同时实现单击事件和双击事件
- 通过js实现单击或双击直接修改内容
- 通过js实现单击或双击直接修改内容
- js 单击与双击事件
- js判断鼠标双击单击
- js判断鼠标双击单击
- QTableWidget单击、双击表头进行排序的方法
- js鼠标单击和双击事件冲突问题的解决方法
- js 关于双击会触发两次单击的解决方法
- js鼠标单击和双击事件冲突问题的解决方法
- js鼠标单击和双击事件冲突问题的解决方法
- js中单击和双击事件的区分
- 来实现双击和单击的操作的区别
- leetcode笔记--Linked List Cycle
- UE4 Persona:骨架网格物体动画
- OSChina Maven使用说明
- 来自Uber的12条架构重构经验
- jquery根据name取值
- 双击锁定,单击排序的js实现
- C和C++中struct使用的区别
- 深入理解Java:类加载机制及反射
- 【Mongodb】3.0 配置身份验证db.createUser()说明
- Linux服务器显示磁盘满,但实际应用所占不多
- 【转】Vector与ArrayList区别
- 1-题目1202:排序
- 常用MIME类型(Flv,Mp4的mime类型设置)
- Android中简单的图形处理