39-讨论
5.9.3 讨论
为什么
$clientX
和其他变量名以$
字符开头?$
在JavaScript中没有特别的含义——它被当作字母表中的一个字符。在jQuery代码中使用$
前缀只是一个约定,提醒人们该变量包含对jQuery对象的引用,而不是DOM元素等,因为变量名$foobar
从视觉上很类似jQuery操作$('#foobar')
。 当需要同时使用jQuery对象和底层的DOM元素时,这种约定特别有用,例如:
优化代码的经典方法之一是将重复的计算“提升”到循环之外,这样就只需要计算一次。在循环中未作改变的任何值都应该只在循环开始之前计算一次。如果这些计算的代价很高,循环就会因此而大大加速。
这种方法在“循环”是一系列频繁触发的事件(如mousemove)而且“计算”是一个jQuery选择器的时候也很合适。将选择器提升到事件处理程序之外,将使事件处理程序的响应更快。
当然,如果在一个循环中调用多个选择器,也同样能够从将它们移出循环中受益。
注意
var $foo = $('#foo'),foo = $foo[0];
//现在可以使用jQuery对象:
$foo.show();
//或者DOM元素:
var id = foo.id;