3.2.4 以伪类选择器访问DOM元素
3.2.4 以伪类选择器访问DOM元素
伪类选择符
下面介绍的这些伪类选择器的意义基本等同于CSS 3
中所定义的伪类选择器,在使用这些伪类选择器时通常会结合使用前面介绍的选择器,前面的选择器往往可以匹配一个以上的HTML
元素,而以下伪类选择器则用于增加额外的限制。但在某些情况下,jQuery
也可以直接使用伪类选择器来获取DOM
元素。
索引相关伪类选择符
选择符 | 描述 |
---|---|
:first |
返回由匹配指定选择器第一个HTML 元素包装成的jQuery 对象。 |
:last |
返回由匹配指定选择器最后一个HTML 元素包装成的jQuery 对象。 |
:parent |
返回由匹配指定选择器且包含子元素或者文本的所有HTML 元素包装成的jQuery 对象。 |
:even |
返回由匹配指定选择器且索引为奇数的HTML 元素包装成的jQuery 对象。元素索引从0 开始。 |
:odd |
返回由匹配指定选择器且索引为偶数的HTML 元素包装成的jQuery 对象。 |
:eq(index) |
返回由匹配指定选择器且**索引为index **的HTML 元素包装成的jQuery 对象。 |
:gt(index) |
返回由匹配指定选择器且**索引大于index **的所有HTML 元素包装成的jQuery 对象。 |
:lt(index) |
返回由匹配指定选择器且**索引小于index **的所有HTML 元素包装成的jQuery 对象。 |
内容相关的伪类选择符
选择符 | 描述 |
---|---|
:lang(lang_code) |
返回由匹配指定选择器且指定了对应语言代码的HTML 元素包装成的jQuery 对象。如果单独使用该伪类选择器,将返回由所有指定了对应语言代码的HTML 元素包装成的jQuery 对象。 |
:contains(text) |
返回由匹配指定选择器且包含text 文本的HTML 元素包装成的jQuery 对象。如果单独使用该伪类选择器,将返回由所有包含text 文本的HTML 元素包装成的jQuery 对象。 |
:empty |
返回由匹配指定选择器且不包含任何内容(包含字符串也不行)的HTML 元素包装成的jQuery 对象。如果单独使用该伪类选择器,将返回由所有不包含任何内容(包含字符串也不行)的HTML 元素包装成的jQuery 对象。 |
包内其他内容相关的选择符
选择符 | 描述 |
---|---|
:not(selector) |
返回由匹配指定选择器但去除selector 选择器匹配的HTML 元素的所有HTML 元素包装成的jQuery 对象。 |
:has(selector) |
返回由匹配指定选择器且包含selector 对应HTML 元素的所有HTML 元素包装成的jQuery 对象。注意::has(selector) 限定不是返回selector 所匹配的HTML 元素,而是返回由包含selector 所匹配HTML 元素的HTML 元素包装成的jQuery 对象。 |
可见性相关的伪类选择符
选择符 | 描述 |
---|---|
:hidden |
返回由匹配指定选择器且当前不可见的HTML 元素包装成的jQuery 对象。 |
:visible |
返回由匹配指定选择器且当前可见的HTML 元素包装成的jQuery 对象。 |
其他
选择符 | 描述 |
---|---|
:animated |
返回由匹配指定选择器且当前正在执行动画效果的HTML 元素包装成的jQuery 对象。如果单独使用该伪类选择器,将返回由所有正在执行动画效果的HTML 元素包装成的jQuery 对象。 |
:target |
返回由正在被访问的命名锚点的目标元素包装成的jQuery 对象。 |
:focus |
返回由匹配指定选择器且当前获得焦点的HTML 元素包装成的jQuery 对象。如果单独使用该伪类选择器,将返回由所有当前获得焦点的HTML 元素包装成的jQuery 对象。 |
程序示例
下面的代码示范了以上伪类选择器的用法。
1 | <!DOCTYPE html> |
该程序同时使用了选择器和伪类选择器。
:lang伪类选择器
:lang
伪类选择器是jQuery 1.9
新增的,它用于根据语言代码来访问HTML
元素。
下面代码示范了:lang
伪类选择器的作用。
1 | <!DOCTYPE html> |
该程序中的第一行JS代码根据:lang(en)
来获取元素,这样将会获取所有leng
属性为en
或以en开头
的元素,因此该页面中2个<div.../>
和一个<p.../>
元素都能匹配。
该程序中的第二行JS代码根据p:lang(en)
来获取元素,这样将会获取所有leng
属性为en
或以en开头
的p元素,因此该页面中只有一个<p.../>
元素可以匹配。
子代伪类选择器
在下面的5个伪类选择器中,:first-child
、:last-child
和:first
、:last
有点相似,且:nth-child
、:nth-last-child
比较有用。
:nth-child伪类选择器
:nth-child(index/even/odd/equation)
:这个伪类选择器的功能比较强大,它有如下4种用法::nth-child(n)
:返回由匹配指定选择器且是其父节点内的第n个DOM
节点包装成的jQuery
对象,其中n为从1开始的元素索引。:nth-child(even)
:返回由匹配指定选择器且在其父节点内的节点索引为偶数的
HTML
元素包装成的jQuery
对象。:nth-child(odd)
:返回由匹配指定选择器且在其**父节点内的节点索引为奇数
**的HTML
元素包装成的jQuery
对象。:nth-child(xn+m)
:返回由匹配指定选择器且在其父节点内的节点索引为xn+m
的HTML
元素包装成的jQuery
对象,其中n
不可变,x
、m
可变。例如3n+1
,则匹配索引为1
、4
、7
等的元素。
:nth-last-child(index/even/odd/equation)
:这个选择器与:nth-child
的功能大致相似,只不过该选择器是倒过来计算索引。:first-child
:返回由匹配指定选择器且是其父节点的第一个HTML
元素的HTML
元素包装成的jQuery
对象。:last-child
:返回由匹配指定选择器且是其父节点的最后一个HTML
元素的HTML
元素包装成的jQuery
对象。:only-child
:返回由匹配指定选择器且是其父元素中唯一的HTML
元素的HTML
元素包装成的jQuery
对象,也就是说:如果该父元素下有多个子元素则不会被匹配。
程序示例
下面的程序示范了以上伪类选择器的用法。
1 |
|
XXX-of-type伪类选择器
jQuery 1.9
还新增了如下几个伪类选择器:first-of-type
、:last-of-type
、:nth-of-type
、:nth-last-of-type
、:only-of-type
。它们的作用有点类似于:first-child
、:last-child
、:nth-child
、:nth-last-child
、:only-child
,但又略有不同。
选择符 | 描述 |
---|---|
:first-of-type |
返回匹配指定选择器且是其父节点内的第一个同类型 的元素。 |
:last-of-type |
返回匹配指定选择器且是其父节点内的最后一个同类型 的元素。 |
:nth-of-type(index/even/odd/equation) |
返回匹配指定选择器且是其父节点内的第index个、偶数个、奇数个或特定公式 个同类型的元素。 |
:nth-last-of-type(index/even/odd/equation) |
与前一个伪类选择器的作用类似,只是倒过来计算索引而已。 |
:only-of-type |
返回匹配指定选择器且是其父节点内的唯一同类型的元素。 |
:nth-child和:nth-of-type的异同
举个例子说明:
.abc:nth-child(n)
,先选择出匹配.abc
的元素,然后判断这些元素是否是父元素的第n个孩子,如果是则选中..abc:nth-of-type(n)
,先选择出匹配.abc
的元素,然后判断这些元素是否是父类的第n个孩子,并且这个孩子还要匹配.abc
(同类型)
程序示例
请看书,懒得抄了.