02-导言
2.0 导言
jQuery最核心的部分是选择器引擎,它允许根据名称、属性、状态等选择任何文档中的元素。因为CSS非常流行,所以采用它的选择器语法简化jQuery中的元素选择就很有意义了。除了支持CSS1-3规范中的大部分选择器之外,jQuery还添加了一些自定义选择器,这些选择器可以用于根据特殊状态和特征选择元素。此外,可以创建自己的自定义选择器!本章讨论用jQuery选择元素时较常遇见的一些问题。
在第一个秘诀之前,先讨论几个基本原理。
在文档中选择一个特定的元素或者一组元素的最简方法是在jQuery包装器函数中使用CSS选择器,如:
jQuery('#content p a');
//选择#content中所有段落里的所有锚元素
既然已经选择了所需的元素,就可以在集合上运行任何jQuery方法了。例如,向所有链接添加 selected 类很简单:
jQuery('#content p a').addClass('selected');
jQuery提供了许多有助于元素选择过程的DOM遍历方法,例如, next() 、 prev() 和 parent() 。这些方法和其他方法都以一个选择器表达式作为唯一的参数,相应地过滤返回的结果。所以,可以在许多地方使用CSS选择器,而不是仅仅在 jQuery(...) 中。
在构造选择器时,有一个通用的优化原则:只追求必要的确定性。要记住重要的一点:选择器越复杂,jQuery处理字符串的时间就越长。jQuery用原生的DOM方法读取你搜索的元素。之所以能够使用选择器,只是因为在jQuery中很好地应用了抽象;这本身没有什么问题,但是理解你所编写的选择器造成的后果非常重要。下面是不必要的复杂选择器的一个典型例子;
jQuery('body div#wrapper div#content');
越高的确定性并不一定越快。前一个选择器可以改写成:
jQuery('#content');
这个选择器的效果相同,但是能够减少前一个版本的开销。还要注意,有时候可以为选择器指定一个上下文,对其进一步的优化;本章稍后将讨论这个主题(见秘诀2.11)。