3.2 选择器表达式
为了准确描述Sizzle的实现,避免歧义,需要先约定一些相关术语,具体如表3-1所示。
表3-1 术语和约定
序号 术 语 说明和示例
1 选择器表达式 CSS选择器表达式,例如,"div>p"
2 并列选择器表达式 逗号分割的多个选择器表达式,例如,"div, p"
3 块表达式 例如,"div>p"中的"div"、"p"
4 块表达式类型 例如,"div"的类型是TAG,".red"的类型是CLASS,"div.red"则是TAG + CLASS。共有8种块表达式类型:ID、CLASS、NAME、ATTR、TAG、CHILD、POS、PSEUDO
5 块间关系符 表示块表达式之间关系的符号,例如,"div>p"中的">"。共有4种块间关系符:">"父子关系、""祖先后代关系、"+"紧挨着的兄弟元素、"~"之后的所有兄弟元素
选择器表达式由块表达式和块间关系符组成,如图3-2所示。其中,块表达式分为3种:简单表达式、属性表达式、伪类表达式;块间关系符分为4种:">"父子关系、""祖先后代关系、"+"紧挨着的兄弟元素、"~"之后的所有兄弟元素;块表达式和块间关系符组成了层级表达式。