今天看到了以前写jQuery的点点滴滴,就把它整理了一下:
1.总是从#id选择器来继承;<最快>
2.第二快就是tag选择器,最好总是用tag来修饰class(并且不要忘了就近的ID);
3.最慢的是class,他需要解析DOM树,并且在浏览器内核外递归<无法被优化>;
4.CSS选择器从右到左匹配的机制后,明白只要当前选择符的左边还有其他选择符,样式系统就会继续向左移动,直到找到和规则匹配的选择符,或者因为不匹配而退出。我们 把最右边选择符称之为关键选择器。所以最右边的选择器更具体些,而左边的选择器范围较宽泛一些.
5.使用find(),而不是使用上下文,虽然jQuery源码里选择器部分都这么用,但当你看看它们实现的方法,就知道最终还是回到了find()的怀抱。
6.选择器的写法避免过度的约束;多用父子,少用嵌套;
7.利用强大的链式操作比缓存更有效.
8.尽量使用.on方法,如果你使用比较新版本的jQuery类库的话,请使用.on,其它任何方法都是最终使用.on来实现的。
9.多用逻辑判断||或者&&来提速:
var attr = attr || “”;这个运算经常用来判断一个变量是否已定义
在运算过程中,首先js 会将 && 和|| 两边的值转成Boolean 类型,然后再算值 ,&&运算如果返回true,则取后面的值,如果|| 返回true,则取前面的值 , 而其中数值转换成boolean 的规则 是:对象、非零整数、非空字符串返回true,其它为false 该逻辑运算符支持短路原则。
10.判断一个$对象是否存在:$("").length > 0;<jQuery对象是Array like,而不是真正的Array>;
11.
(1)$("ul li:first") 选取第一个 <ul> 元素的第一个 <li> 元素
$("ul li:first-child") 选取每个 <ul> 元素的第一个 <li> 元素
(2)$("[href]")选取带有 href 属性的元素
$("a[target='_blank']")选取所有target属性值等于"_blank"的<a>元素
$("a[target!='_blank']")选取所有target属性值不等于"_blank"的<a>元素
$(":button") 选取所有type="button"的<input>元素和<button>元素
12.使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margin-right,等等。
同时,色彩动画并不包含在核心 jQuery 库中。
13.阻止默认事件,event.preventDefault();或者return false;
在IE下前者可能会失效,而后者可以适用于任何浏览器.
stopPropagation()<当事件发生并尝试冒泡时,阻止冒泡>.
14.每一个js函数都有一个特殊的参数arguments,利用它可以实现方法的重载,在使用jQuery的方法是仔细阅读api,有些参数常见的写法被省略了。
15.this是DOM对象,而不是jQuery对象.注意DOM对象和jQuery对象不可混用。
16. arguments在函数体中,JavaScript提供了一个特殊对象arguments,它是当前函数被调用时传入的参数数组,通过访问arguments不仅可以访问所有实参,还可以获得实 参的数目,从而实现其他编程语言中可变参数的机制。
17.异步是计算机在执行任务的过程中,某些任务可以独立于主控制流执行,使得主控制流得以继续执行,是一种非阻塞的控制方案:
在Javascript中有多种异步的实现方案,它们无一例外地需要回调函数。回调函数就是将函数作为参数传递到其他代码。
(例如:某一个异步任务),这一设计允许了该异步任务完成时执行传入的函数/
在jQuery中回调函数使用非常广泛,$(document).ready(function(){})是一个应用,这里回调函数是个匿名函数。