jQuery 选择器 性能提升 delegate() 采用冒泡模式
来源:互联网 发布:js获取单选框选中值 编辑:程序博客网 时间:2024/05/17 23:45
事件的委托处理(Event Delegation)
javascript的事件模型,采用”冒泡”模式,也就是说,子元素的事件会逐级向上”冒泡”,成为父元素的事件。
利用这一点,可以大大简化事件的绑定。比如,有一个表格(table元素),里面有100个格子(td元素),现在要求在每个格子上面绑定一个点击事件(click),请问是否需要将下面的命令执行100次?
$(“td”).bind(“click”, function(){
$(this).toggleClass(“click”);
});
回答是不需要,我们只要把这个事件绑定在table元素上面就可以了,因为td元素发生点击事件之后,这个事件会”冒泡”到父元素table上面,从而被监听到。
因此,这个事件只需要在父元素绑定1次即可,而不需要在子元素上绑定100次,从而大大提高性能。这就叫事件的”委托处理”,也就是子元素”委托”父元素处理这个事件。
具体的写法有两种。第一种是采用.delegate()方法:
$(“table”).delegate(“td”, “click”, function(){
$(this).toggleClass(“click”);
});
第二种是采用.live()方法:
$(“table”).each(function(){
$(“td”, this).live(“click”, function(){
$(this).toggleClass(“click”);
});
});
这两种写法基本等价。唯一的区别在于,.delegate()是当事件冒泡到指定的父元素时触发,.live()则是当事件冒泡到文档的根元素后触发,因此.delegate()比.live()稍快一点。此外,这两种方法相比传统的.bind()方法还有一个好处,那就是对动态插入的元素也有效,.bind()只对已经存在的DOM元素有效,对动态插入的元素无效。
根据测试,委托处理比不委托处理,快了几十倍。在委托处理的情况下,.delegate()又比.live()大约快26%。
原文转自:http://blog.csdn.net/teresa502/article/details/7322031- jQuery 选择器 性能提升 delegate() 采用冒泡模式
- 利用原生js提升jquery选择器的性能
- 如何提升 CSS 选择器性能
- 提升jQuery性能
- jQuery 提升性能
- jQuery性能提升方法
- jQuery选择器性能测试
- jQuery的选择器性能
- jQuery Selectors Lab 提升jQuery选择器水平
- 如何提升CSS选择器的性能?
- 性能优化-采用切分小事务方式提升性能
- 101 jquery选择器性能分析
- jQuery选择器的性能测试
- 采用pthread实现线程库以及性能提升
- 十大妙招提升jquery的性能
- jquery提升性能最佳实践小结
- 即刻提升jQuery性能的十个技巧
- jQuery提升性能技巧及个人总结
- chrome源代码目录结构简介(版本4.1.249.1059)
- Android 读取SIM卡参数
- PHP相关系列 - 蚂蚁变大象:浅谈常规网站是如何从小变大的
- chrome源码学习之知识体系指南
- android操作sim卡联系人信息
- jQuery 选择器 性能提升 delegate() 采用冒泡模式
- ECSHOP 数据库结构参数表
- 希尔排序
- PIC单片机(PIC16F877A)外部中断程序
- Android: 在WebView中获取网页源码
- discuz文件作用
- ECSHOP 数据库结构参数表
- 使用OpenCV需要注意的小细节
- [Win32]IP数据报的首部如何定义