学科分类

其他选择器

jQuery中的选择器非常多,对于初学者来说,并没有必要全部掌握,只记住常用的选择器即可。当需要使用其他不熟悉的选择器时,可以通过查阅文档查看具体的解释。为了方便读者查阅,接下来简单介绍一些其他在开发中可能会用到的选择器。

1. 获取同级元素

使用“+”或“~”可以获取同级元素,如表1所示。

表1 获取同级元素

选择器 功能描述 示例
prev + next 获取当前元素紧邻的下一个同级元素 $("div + .title")获取紧邻<div>的下一个class名为title的兄弟节点
prev ~ siblings 获取当前元素后的所有同级元素 $(".bar ~ li")获取class名为bar的元素后的所有同级元素节点<li>

2. 筛选元素

在jQuery中还有一些选择器可以筛选元素,如表2所示。

表2 筛选元素

选择器 功能描述 示例
:gt(index) 获取索引大于index的元素 $("li:gt(3)")获取索引大于3的所有<li>元素
:lt(index) 获取索引小于index的元素 $("li:lt(3)")获取索引小于3的所有<li>元素
:not(seletor) 获取除指定的选择器外的其他元素 $("li:not(li:eq(3))")获取除索引为3外的所有<li>元素
:focus 匹配当前获取焦点的元素 $("input:focus")匹配当前获取焦点的<input>元素
:animated 匹配所有正在执行动画效果的元素 $("div:not(:animated)")匹配当前没有执行动画的<div>元素
:target 选择由文档URI的格式化识别码表示的目标元素 若URI为http://example.com/#foo,则$("div:target")将获取<div id="foo">元素
:contains(text) 获取内容包含text文本的元素 $("li:contains('js')")获取内容中含“js”的<li>元素
:empty 获取内容为空的元素 $("li:empty")获取内容为空的<li>元素
:has(selector) 获取内容包含指定选择器的元素 $("li:has('a')")获取内容中含<a>元素的所有<li>元素
:parent 选取带有子元素或包含文本的元素 $("li:parent")选取带有子元素或包含文本的li元素
:hidden 获取所有隐藏元素 $("li:hidden")获取所有隐藏的<li>元素
:visible 获取所有可见元素 $("li:visible")获取所有可见的<li>元素

3. 属性选择器

jQuery中还提供了根据元素的属性获取指定元素的方式。例如,含有class属性值为current的<div>元素。常用的属性选择器如表3所示。

表3 属性选择器

选择器 功能描述 示例
[attr] 获取具有指定属性的元素 $("div[class]")获取含有class属性的所有<div>元素
[attr=value] 获取属性值等于value的元素 $("div[class='current']")获取class等于current的所有<div>元素
[attr!=value] 获取属性值不等于value的元素 $("div[class!='current']")获取class不等于current的所有<div>元素
[attr^=value] 获取属性值以value开始的元素 $("div[class^='box']")获取class属性值以box开始的所有<div>元素
[attr$=value] 获取属性值以value结尾的元素 $("div[class$='er']")获取class属性值以er结尾的所有<div>元素
[attr*=value] 获取属性值包含value的元素 $("div[class*='-']")获取class属性值中含有“-”符号的所有<div>元素
[attr~=value] 获取元素的属性值包含一个value,以空格分隔 $("div[class~='box']")获取class属性值等于“box”或通过空格分隔并含有box的<div>元素,如“t box”
[attr1][attr2]...[attrN] 获取同时拥有多个属性的元素 $("input[id][name$='usr']")获取同时含有id属性和属性值以usr结尾的name属性的<input>元素

4. 子元素选择器

利用子元素选择器可以对子元素进行筛选,常用的如表4所示。

表4 子元素选择器

选择器 功能描述
:nth-child(index/even/odd/公式) 索引index默认从1开始,匹配指定index索引、偶数、奇数、或符合指定公式(如2n,n默认从0开始)的子元素
:first-child 获取第一个子元素
:last-child 获取最后一个子元素
:only-child 如果当前元素是唯一的子元素,则匹配
:nth-last-child(index/even/odd/公式) 选择所有它们父元素的第n个子元素。计数从最后一个元素开始到第一个
:nth-of-type(index/even/odd/公式)) 选择同属于一个父元素之下,并且标签名相同的子元素中的第n个子元素
:first-of-type 选择所有相同的元素名称的第一个子元素
:last-of-type 选择所有相同的元素名称的最后一个子元素
:only-of-type 选择所有没有兄弟元素,且具有相同的元素名称的元素
:nth-last-of-type(index/even/odd/公式) 选择属于父元素的特定类型的第n个子元素,计数从最后一个元素到第一个

5. 表单选择器

jQuery还提供了针对表单元素的选择器,用来方便表单开发,如表5所示。

表5 表单选择器

选择器 功能描述
:input 获取页面中的所有表单元素,包含<select>以及<textarea>元素
:text 选取页面中的所有文本框
:password 选取所有的密码框
:radio 选取所有的单选按钮
:checkbox 选取所有的复选框
:submit 获取submit提交按钮
:reset 获取reset重置按钮
:image 获取type="image"的图像域
:button 获取button按钮,包括<button></button>和type="button"
:file 获取type="file"的文件域
:hidden 获取隐藏表单项
:enabled 获取所有可用表单元素
:disabled 获取所有不可用表单元素
:checked 获取所有选中的表单元素,主要针对radio和checkbox
:selected 获取所有选中的表单元素,主要针对select

需要注意的是,$("input")与$(":input")虽然都可以获取表单项,但是它们表达的含义有一定的区别,前者仅能获取表单标签是<input>的控件,后者则可以同时获取页面中所有的表单控件,包括表单标签是<select>以及<textarea>的控件。

点击此处
隐藏目录