jQuery性能优化指南[译](2)

作者:Robin 来源:Time Machine 时间:2009-05-12 11:54:00 

3.将jquery对象缓存起来

要养成将jquery对象缓存进变量的习惯.

永远不要这样做:

$(‘#traffic_light input.on).bind(’click‘, function(){…});
$(’#traffic_light input.on).css(‘border’, ‘3px dashed yellow’);
$(‘#traffic_light input.on).css(’background-color‘, ‘orange‘);
$(’#traffic_light input.on).fadeIn(’slow’);

最好先将对象缓存进一个变量然后再操作:

var $active_light = $(‘#traffic_light input.on’);
$active_light.bind(‘click’, function(){…});
$active_light.css(‘border’, ‘3px dashed yellow’);
$active_light.css(‘background-color’, ‘orange’);
$active_light.fadeIn(’slow’);

为了记住我们本地变量是jquery的封装, 通常用一个$作为变量前缀. 记住,永远不要让相同的选择器在你的代码里出现多次.

缓存jquery结果,备用

如果你打算将jquery结果对象用在程序的其它部分,或者你的function会多次执行, 那么就将他们缓存到一个全局变量中.

定义一个全局容器来存放jquery结果, 我们就可以在其它函数引用它们:

// 在全局范围定义一个对象 (例如: window对象)
window.$my =
{
// 初始化所有可能会不止一次要使用的查询
head : $(‘head’),
traffic_light : $(‘#traffic_light’),
traffic_button : $(‘#traffic_button’)
};


function do_something()
{
// 现在你可以引用存储的结果并操作它们
var script = document.createElement(’script’);
$my.head.append(script);

// 当你在函数内部操作是, 可以继续将查询存入全局对象中去.
$my.cool_results = $(‘#some_ul li’);
$my.other_results = $(‘#some_table td’);

// 将全局函数作为一个普通的jquery对象去使用.
$my.other_results.css(‘border-color’, ‘red’);
$my.traffic_light.css(‘border-color’, ‘green’);
}

4. 掌握强大的链式操作

上面的例子也可以写成这样:

var $active_light = $(‘#traffic_light input.on’);$active_light.bind(‘click’, function(){…})
.css(‘border’, ‘3px dashed yellow’)
.css(‘background-color’, ‘orange’)
.fadeIn(’slow’);

这样可以写更少的代码, 让我们的js更轻量.

标签:javascript,jquery,性能
0
投稿

猜你喜欢

  • python和node.js生成当前时间戳的示例

    2022-05-26 05:07:43
  • Python参数类型以及常见的坑详解

    2023-04-16 13:52:33
  • Python多进程并发与同步机制超详细讲解

    2022-11-22 08:35:02
  • 原生js实现五子棋游戏

    2024-06-18 03:22:13
  • MySql批量插入时如何不重复插入数据

    2024-01-29 04:42:00
  • python判断一个数是否能被另一个整数整除的实例

    2021-02-06 13:25:42
  • Python实现的矩阵类实例

    2023-08-13 07:52:09
  • django自定义模板标签过程解析

    2023-07-29 12:34:57
  • python动态监控日志内容的示例

    2022-08-26 18:05:44
  • 用python绘制樱花树

    2023-07-24 19:47:09
  • 提升网站可用性的3个忠告

    2008-01-31 13:48:00
  • SQL Server 2000安全配置详解

    2024-01-20 05:54:37
  • 用Python实现屏幕截图详解

    2022-01-30 08:00:19
  • Python jieba 中文分词与词频统计的操作

    2022-08-31 17:08:14
  • Python实现yaml与json文件批量互转

    2023-11-20 07:07:54
  • 网站升级兼容firefox经验小谈

    2007-10-28 20:28:00
  • vue awesome swiper异步加载数据出现的bug问题

    2024-05-03 15:10:58
  • 对python条件表达式的四种实现方法小结

    2023-11-05 17:01:58
  • Mysql Innodb 引擎优化

    2010-10-25 20:01:00
  • MySQL日期时间函数知识汇总

    2024-01-17 04:02:56
  • asp之家 网络编程 m.aspxhome.com