选择器是jQuery的根基,在jQuery中,对事件处理、遍历DOM和Ajax操作都依赖于选择器。而在学习选择器之前,不得不说CSS(Cascading Style Sheets,层叠样式表),它使得网页的结构和表现样式完全分离。只需更改样式而不动HTML结构,就可以得到不同样式的网页。把CSS应用到网页中有3种方式:行间样式表、内部样式表、外部样式表。
要使某个样式应用于特定的HTML元素,首先要找到该元素,CSS选择器具备这样的功能。主流的浏览器并非完全支持所有的CSS选择器。相对CSS选择器,jQuery选择器不仅完全继承CSS的风格,操作CSS样式的比单纯的CSS功能更为强大,而且兼容所有浏览器。jQuery选择器的写法与CSS选择器的写法十分类似,只不过两者的作用效果不同,CSS选择器找到元素后添加样式,而jQuery选择器找到元素后添加行为。
JQuery 选择器 Overview
- 基本选择器:#id选择器、.class选择器、element选择器、*选择器、selector1,selector2,...selectorN。
- 层次选择器:后代元素选择器、子元素选择器、相邻元素选择器、同辈元素选择器。
- 过滤选择器:基本过滤选择器、内容过滤选择器、可见性过滤选择器、属性过滤选择器、子元素过滤选择器、表单对象属性过滤选择器。
- 表单选择器
1. 基本选择器
| 选择器 | 描述 | 返回 | 示例 |
| #id | 根据给定的id匹配一个元素 | 单个元素 | $("#test")选取id为test的元素 |
| .class | 根据给定的类名匹配元素 | 集合元素 | $(".test")选取所有class为test的元素 |
| element | 根据给定的元素名匹配元素 | 集合元素 | $("p")选取所有的p元素 |
| * | 匹配所有元素 | 集合元素 | $("*")选取所有额元素 |
| selector1,selector2,...selectorN | 将每一个选择器匹配到的元素合并后一起返回 | 集合元素 |
$("div,span,p.myclass")选取所有的<div>,<span> 和class为myclass的<p>标签的一组元素 |
2. 层次选择器
| 选择器 | 描述 | 返回 | 示例 |
| $("ancestor descendant") | 选取ancestor元素里的所有的descendant(后代)元素 | 集合元素 | $("div span")选取<div>里所有的<span>元素 |
| $("parent > child") |
选取parent元素下的child(子)元素,与$("ancestor descendant")有区别 |
集合元素 | $("div > span")选取<div>元素下元素名是<span>的子元素 |
| $("prev + next") | 选取紧接在pre元素后的next元素 | 集合元素 | $(".one+div")选取class为one的下一个<div>的同辈元素 |
| $("pre ~ siblings") | 选取prev元素之后的所有siblings元素 | 集合元素 | $("#two~div")选取id为two的元素后面的所有<div>同辈元素 |
层次选择器可以很好的选取DOM元素之间有层次关系的元素,如后代元素、子元素、相邻元素和同辈元素等。对于表中的$("prev + next")选择器和$("prev ~ siblings")选择器可以用jQuery方法替换,分别为next()方法和nextAll()方法,即$(".one").next("div");和$("#two").nextAll("div");。而siblings()方法匹配是同辈节点,与前后位置无关。
3.过滤选择器
过滤选择器主要是通过特定的过滤规则来筛选出所需的DOM元素,过滤规则与CSS中的伪类选择器语法相同,即选择器都以一个冒号(:)开头。按照不同的过滤规则,过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤选择器。
3.1 基本过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :first | 选取第一个元素 | 单个元素 | $("div:first")选取所有<div>中第一个<div>元素 |
| :last | 选取最后一个元素 | 单个元素 | $("div:last")选取所有<div>中最后一个<div>元素 |
| :not(selector) | 去除所有与给定选择器匹配的元素 | 集合元素 | $("input:not(.myclass)")选取class不是myclass的<input>元素 |
| :even | 选取索引为偶数的所有元素,索引从0开始 | 集合元素 | $("input:even")选取索引是偶数的<input>元素 |
| :odd | 选取索引为奇数的所有元素,索引从0开始 | 集合元素 | $("input:odd")选取索引是奇数的<input>元素 |
| :eq(index) | 选取索引等于index的元素,索引从0开始 | 集合元素 | $("input:eq(1)")选取索引是1的<input>元素 |
| :gt(index) | 选取索引大于index的元素,索引从0开始 | 集合元素 | $("input:gt(1)")选取索引大于1的<input>元素 |
| :lt(index) | 选取索引小于index的元素,索引从0开始 | 集合元素 | $("input:lt(1)")选取索引小于1的<input>元素 |
| :header | 选取所有的标题元素,例如h1,h2,h3等元素 | 集合元素 | $(":header")选取网页中所有的<h1>,<h2>,<h3>...... |
| :animated | 选取当前正在执行动画的所有元素 | 集合元素 | $("div:animated")选取正在执行动画的<div>元素 |
| :focus | 选取当前获取焦点的元素 | 集合元素 | $(":focus")选取当前获取焦点的元素 |
3.2 内容过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :contains(text) | 选取含有文本为“text”的元素 | 集合元素 | $("div:contains("我")")选取含有文本“我”的<div>元素 |
| :empty | 选取不包含子元素或文本的空元素 | 集合元素 | $("div:empty")选取不包含子元素(包括文本元素)的<div>空元素 |
| :has(selector) | 选取含有选择器所匹配的元素的元素 | 集合元素 | $("div:has("p")")选取含有<p>元素的<div>元素 |
| :parent | 选取含有子元素或者文本的元素 | 集合元素 | $("div:parent")选取拥有子元素(包括文本元素)的div元素 |
内容过滤选择器的过滤规则主要体现在它所包含的子元素或文本内容上。
3.3 可见性过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :hidden | 选取所有不可见的元素 | 集合元素 |
$(":hidden")选取所有不可见的元素。包括<input type="hidden"/>,<div style="display:none;"> 和<div style="visibility:hidden;">等元素。如果只是想选取<input>元素,可以使用$("input:hidden") |
| :visible | 选取所有可见的元素 | 集合元素 | $("div:visible")选取所有可见的<div>元素 |
可见性过滤选择器是根据元素的可见和不可见状态来选择相应的元素。在可见性过滤选择器中,需要注意选择器:hidden,它不仅包括样式属性display为“none”的元素,也包括文本隐藏域(<input type="hidden">)和visibility:hidden之类的元素。
3.4 属性过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| [attribute] | 选取拥有此属性的元素 | 集合元素 | $("div[id]")选取拥有属性id的元素 |
| [attribute=value] | 选取属性的值为value的元素 | 集合元素 |
$("div[tittle=test]")选取属性为"test" 的<div>元素 |
| [attribute!=value] | 选取属性的值不等于value的元素 | 集合元素 |
$("div[tittle!=test]")选取属性不等于 "test"的<div>元素(注意:没有属性tittle 的<div>元素也会被选取) |
| [attribute^=value] | 选取属性的值以value开始的元素 | 集合元素 |
$("div[tittle^=test]")选取属性tittle 以"test"开始的<div>元素 |
| [attribute$=value] | 选取属性的值以value结束的元素 | 集合元素 |
$("div[tittle$=test]")选取属性tittle以 "test"结束的<div>元素 |
| [attribute*=value] | 选取属性的值含有value的元素 | 集合元素 |
$("div[tittle*=test]")选取属性tittle含 有"test"的<div>元素 |
| [attribute|=value] |
选取属性等于给定字符串或以该字符串为前缀 (该字符串后跟一个连字符"_")的元素 |
集合元素 |
$("div[tittle|="en"]")选取属性tittle等 于en或以en为前缀(该字符串后跟一个连字符"_") 的元素 |
| [attribute~=value] | 选取属性用空格分隔的值中包含一个给定值得元素 | 集合元素 |
$("div[tittle~="uk"]")选取属性tittle用 空格分隔的值中包含字符uk的元素 |
| [attribute1][attribute2][attributeN] |
用属性选择器合并一个符合属性选择器,满足 多个条件。每选择一次,缩小一次范围 |
集合元素 |
$("div[id][tittle$="test"]") 选取拥有属性id,并且tittle以"test" 结束的<div>元素 |
属性过滤选择器的过滤规则是通过元素的属性来获取相应的元素。
3.5 子元素过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :nth-child(index/even/odd/equation) |
选取每个父元素下的第index个子元素 或奇偶元素。(index从1开始) |
集合元素 |
:eq(index)只匹配一个元素,而:nth-child将为每一个父元素 匹配子元素,并且:nth-child(index)的index是从1开始的, 而:eq(index)是从0开始的。 |
| :first-child | 选取每个父元素下的第一个子元素 | 集合元素 |
:first只返回单个元素,而:first-child选择符将为每个父 元素匹配第一个子元素,如$("ul li:first-child");选择 每个<ul>中第一个<li>元素 |
| :last-child | 选取每个父元素下的最后一个子元素 | 集合元素 |
同样,:last只返回单个元素,而:last-child选择符将为每 个父元素匹配最后一个子元素 |
| :only-child |
如果某个元素是它父元素中惟一的子元素, 那么将会被匹配。反之,不匹配。 |
集合元素 |
$("ul li:only-child")在<ul>中选取是惟一子元素的 <li>元素 |
注意:eq(index)只匹配一个元素,而nth-child将为每一个符合条件的父元素匹配子元素。同时应该注意到nth-child(index)的index是从1开始的,而eq(index)是从0开始的。同理:first和:first-child,:last和:last-child也类似。
3.6 表单对象过滤选择器
| 选择器 | 描述 | 返回 | 示例 |
| :enabled | 选取所有可用元素 | 集合元素 | $("#form1:enabled")选取id为"form1"的表单内的所有可用元素 |
| :disabled | 选取所有不可用元素 | 集合元素 | $("#form2:disabled")选取id为"form2"的表单内的所有不可用元素 |
| :checked | 选取所有被选中的元素(单选框,复选框) | 集合元素 | $("input:checked")选取所有被选中的<input>元素 |
| :selected | 选取所有被选中的选项元素(下拉列表) | 集合元素 | $("select option:selected")选取所有被选中的选项元素 |
表单对象过滤选择器主要是对所选择的表单元素进行过滤。
4. 表单选择器
| 选择器 | 描述 | 返回 | 示例 |
| :input |
选取所有的<input>、<textarea>、<select> 和<button>元素 |
集合元素 |
$(":input")选取所有的<input>、<textarea>、 <select>和<button>元素 |
| :text | 选取所有的单行文本框 | 集合元素 | $(":text")选取所有的单行文本框 |
| :password | 选取所有的密码框 | 集合元素 | $(":password")选取所有的密码框 |
| :radio | 选取所有的单选框 | 集合元素 | $(":radio")选取所有的单选框 |
| :checkbox | 选取所有的多选框 | 集合元素 | $(":checkbox")选取所有的复选框 |
| :submit | 选取所有的提交按钮 | 集合元素 | $(":submit")选取所有的提交按钮 |
| :image | 选取所有的图像按钮 | 集合元素 | $(":image")选取所有的图像按钮 |
| :reset | 选取所有的重置按钮 | 集合元素 | $(":reset")选取所有的重置按钮 |
| :button | 选取所有的按钮 | 集合元素 | $(":button")选取所有的按钮 |
| :file | 选取所有的上传域 | 集合元素 | $(":file")选取所有的上传域 |
| :hidden | 选取所有不可见元素 | 集合元素 | $(":hidden")选取所有不可见元素 |
posted on
浙公网安备 33010602011771号