利用事件委托解决大量循环重复的事件。
2015-10-28 21:53
183 查看
假设有个ul,它下面有5000个li;
需求是给这5000个li添加一个点击事件,;
有些人会去这样做
这样做的弊端显而易见,遍历的基数越大,性能开销越大。
因此正确的做法应该是这样
利用时间冒泡的特性进行事件委托。避免了大量的循环遍历,减少了性能开销。
jQuery下可以利用on添加事件的方法达到同样的效果;
需求是给这5000个li添加一个点击事件,;
有些人会去这样做
var oUl = document.getElementById('oUl'); var aLi = oUl.getElementsByTagName('li'); var len = aLi.length; for(var i =0;i<len;i++){ (function(index){ aLi[i].onclick = function(){ fn() }; })(i) }
这样做的弊端显而易见,遍历的基数越大,性能开销越大。
因此正确的做法应该是这样
var oUl = document.getElementById('oUl'); oUl.onclick = function(ev){ var oEv = ev || event; var oSrc = oEv.srcElement || oEv.target; if(oSrc.tagName=='li'){ fn(); } }
利用时间冒泡的特性进行事件委托。避免了大量的循环遍历,减少了性能开销。
jQuery下可以利用on添加事件的方法达到同样的效果;
var $ul = $('ul'); $ul.on('click','li',function(){ fn(); })
相关文章推荐
- java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition
- 黑客与画家阅读体会
- Scrum Meeting---Four(2015-10-28)
- 用Lingo求解线性规划问题
- 文本查看及处理
- mysql ab 不同步的几种情况及解决方法
- assert用法
- 10.28Linux挂载U盘
- 随机数存放到数组并求和
- js小案例效果学习记录
- Android带密码解压----Zip4J开源项目使用
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
- zoj 2868 Incredible Cows 二分状态搜索
- 一个前端博客(6)——拖拽效果
- 初深线程
- 数组课后作业
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
- Office 365 离线安装
- MySQL优化器:index merge介绍
- Automated CMS category, version identification (CMS vulnerability detection)