jQuery性能优化的28个建议(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:28 点击:

1 $('#myTable
 td').click(function(){

2     $(this).css('background',
'red');

3 });

4  改进方式:

5 $('#myTable').click(function(e)
 {

6 var

$clicked = $(e.target);

7 $clicked.css('background',
'red');

8 });

假设有100个td,在使用普通的方式的时候,你绑定了100个事件。在改进方式中,你只为一个元素绑定了1个事件,至于是100个事件的效率高,还是1个事件的效率高,相信你也能自行分辨了。

10. 尽管jQuery不会抛出异常,但开发者也应该检查对象

尽管jQuery不会抛出大量的异常给用户,但是开发者也不要依赖于此。jQuery通常会执行了一大堆没用的函数之后才确定一个对象是否存在。所以在对一个作一系列引用之前,应先检查一下这个对象存不存在。

11. 使用直接函数,而不要使用与与之等同的函数

为了获得更好的性能,你应该使用直接函数如$.ajax(),而不要使用$.get(),$.getJSON(),$.post(),因为后面的几个将会调用$.ajax()。

12. 缓存jQuery结果,以备后来使用

你经常会获得一个javasript应用对象——你可以用App.来保存你经常选择的对象,以备将来使用:

1 App.hiddenDivs
 = $('div.hidden');

2 // 之后在你的应用中调用:

3 App.hiddenDivs.find('span');

13. 采用jQuery的内部函数data()来存储状态

不要忘了采用.data()函数来存储信息:

1 $('#head').data('name',
'value');

2 // 之后在你的应用中调用:

3 $('#head').data('name');

14. 使用jQuery utility函数

不要忘了简单实用的jQuery的utility函数。我最喜欢的是$.isFunction(), $isArray()和$.each()。

15. 为HTML块添加“JS”的class

当jQuery载入之后,首先给HTML添加一个叫”JS”的class

$('HTML').addClass('JS');

只有当用户启用JavaScript的时候,你才能添加CSS样式。例如

/* 在css中 */

.JS #myDiv{display:none;}

所以当JavaScript启用的时候,你可以将整个HTML内容隐藏起来,用jQuery来实现你想实现的(譬如:收起某些面板或当用户点击它们时展开)。而当Javascript没有启用的时候,浏览器呈现所有的内容,搜索引擎爬虫也会勾去所有内容。我将来会更多的使用这个技巧。

阅读更多相关内容

三、关于优化事件性能的建议

16. 推迟到$(window).load

有时候采用$(window).load()比$(document).ready()更快,因为后者不等所有的DOM元素都下载完之前执行。你应该在使用它之前测试它。

17. 使用Event Delegation

当你在一个容器中有许多节点,你想对所有的节点都绑定一个事件,delegation很适合这样的应用场景。使用Delegation,我们仅需要在父级绑定事件,然后查看哪个子节点(目标节点)触发了事件。当你有一个很多数据的table的时候,你想对td节点设置事件,这就变得很方便。先获得 table,然后为所有的td节点设置delegation事件:

1 $("table").delegate("td",
"hover",
function(){

2 $(this).toggleClass("hover");

3 });

使用ready事件的简写

如果你想压缩js插件,节约每一个字节,你应该避免使用$(document).onready()

1 /
 也不要使用

2 $(document).ready(function

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 用js检测两个线段是否相交
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
  • Jquery封装幻灯片效果
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1