博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于树节点巨多时获取用户选中(可多选)节点的优化
阅读量:5094 次
发布时间:2019-06-13

本文共 1140 字,大约阅读时间需要 3 分钟。

前端开发时,单从性能上考虑,对dom的遍历越少性能越好,最好是能不去遍历dom树;下面事例中用户可以多选,一个没有保存用户选中的项,一个保存了用户选中的项,下面看实例代码:

 

html:

      
  •     
            
    •         ...      
    •     
      

 

 优化前的javascript:

jQuery("body").on("click","li",function(){  currentItem= jQuery(this);    // 用户可以取消选中状态    currentItem.toggleClass("selected");});

 

优化后javascript:

var self = {guid:1,selectedFile:{}};jQuery("body").on("click","li",function(){  currentItem= jQuery(this);  // 给每个文件一个唯一的id  if(!currentItem.data("id")){    currentItem.data("id",self.guid++);  }  // 用户可以取消选中状态  currentItem.toggleClass("selected");  if(currentItem.hasClass("selected")){     // 选中文件保存到选中对象列表中     self.selectedFile[currentItem.data("id")] = currentItem;  }  else{     // 否则从选中对象列表中删除     delete self.selectedFile[currentItem.data("id")];  } });

 

说明:看起来优化后的代码多了,但是如果html嵌套的dom节点很多的话(比如一个企业的联系人树形结构,可能有上万个),要获取用户已经选中的项时,那么优化后的javascript的性能将充分体现出来,优化前只能通过jQuery("li.selected")获取到用户选中项(意味着javascript要在浩瀚的联系人树中查找),但优化后的代码只需要通过self.selectedFile即可获取选中项,根本就不用去遍历dom树。如果是单选的话就不需要guid了,从而不需要给元素加guid,这样代码会少很多,但原理是一样的。

 

转载于:https://www.cnblogs.com/cqiliang/archive/2013/06/05/3120097.html

你可能感兴趣的文章
http://www.jb51.net/article/51934.htm
查看>>
linux查看防火墙状态及开启关闭命令
查看>>
Java集合——TreeMap源码详解
查看>>
2015,鬼王Xun和GGL比赛,带给我们无尽的欢乐
查看>>
111... 南邮NOJ 1079
查看>>
别把SEO当苦力活,做优化要讲究策略
查看>>
Django项目:CRM(客户关系管理系统)--41--33PerfectCRM实现King_admin编辑整张表限制
查看>>
关于时间
查看>>
面向对象 阶段性总结
查看>>
[Android] 开发第十天
查看>>
[html]window.open 使用示例
查看>>
.NET下使用socket.io随笔记录
查看>>
操作~拷贝clone()
查看>>
通过this()调用有参构造方法
查看>>
【RN6752】模拟高清AHD芯片或成为车机新标配
查看>>
Android Clipboard(复制/剪贴板)
查看>>
Android中Bitmap,byte[],Drawable相互转化
查看>>
UEFI引导修复教程和工具
查看>>
Using True Type Fonts in XTerm
查看>>
文件读写
查看>>