让jquery再快一点

jquery优化笔记收录。

总是从#id选择器来继承,这是jQuery选择器的一条黄金法则。jQuery选择一个元素最快的方法就是用ID来选择了,原生JS也一样。

1
$('#target');

或者从ID选择器继承来选择多个元素:

1
$('#target p').hide();

在class前面使用tag

jQuery中第二快的选择器就是tag选择器,因为它和直接来自于原生的Javascript方法getElementByTagName()。所以最好总是用tag来修饰class。这是第二快

jQuery中class选择器是最慢的,因为在IE浏览器下它会遍历所有的DOM节点。尽量避免使用class选择器。还有注意不要用tag来修饰ID。

1
var target = $('div#target');   // 非常慢,不要使用

用ID来修饰ID也是画蛇添足:

1
var target_child = $('#target #target_child');// 非常慢,不要使用

使用子查询

将父对象缓存起来以备将来的使用

1
2
3
var header = $('#header');
header.show();
header.hide();

为了区分普通的JavaScript对象和jQuery对象,可以在变量首字母前加上$符号

用上链式操作效果会更好

1
2
3
4
5
$('#header').show()
.hide()
.css('display','block')
.css('color','red')
.fadeTo(2, 0.7);

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

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

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

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

使用jQuery utility函数。不要忘了简单实用的jQuery的utility函数。像值得称道的$.isFunction(), $isArray()和$.each()。

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