一直在学习web前端的知识,学习jQuey也有一段时间了,想总结一下。这一章先来学习jQuery选择器的知识。
一、jQuery选择器的介绍
jQuery中的选择器完全继承了css的风格。利用jQuery选择器,可以非常快速和便捷的找出DOM元素,学习jQuery选择器是学习jQuery的基础,因为所有的行为都要在获取元素之后才能生效
二、jQuery选择器
1、基本选择器
基本选择器是最常用也是最简单的选择器,通过元素的id,class和标签名等来查找DOM元素
选择器 | 描述 | 返回 | 示例 |
#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")有区别,$("ancestor descendant")选择的是后代元素 | 集合元素 | $("div > span")选取<div>元素下元素名为<span>的子元素 |
$("prev + next") | 选择紧接在prev元素后的next元素 | 集合元素 | $(".one + div")选取class为one的下一个<div>同辈元素 |
$("prev ~ siblings") | 选取prev元素之后的所有siblings元素 | 集合元素 | $("#two~div")选取id为two的元素后面的所有<div>同辈元素 |
层次选择器中增加两个方法的介绍,next()方法可以用来代替$(".one + div"),nextAll()方法可以用来代替$("#prev~div")。siblings()方法与$("#prev~div")进行比较,siblings()方法与前后位置无关,只要是同辈节点就能匹配,$("#prev~div")只能选择"prev"元素之后的同辈元素"<div>"
3、过滤选择器
过滤选择器与css中的伪类选择器语法相同,即以一个冒号(:)开头。按照不同的过滤规则,过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤选择器
a、基本过滤选择器
选择器 | 描述 | 返回 | 示例 |
:first | 选择第一个元素 | 单个元素 | $("div:first")选择第一个<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的元素(index从0开始) | 单个元素 | $("input:eq(1)")选取索引为1的input元素 |
:gt(index) | 选择索引大于index的元素(index从0开始) | 集合元素 | $("input:gt(1)")选取索引大于1的input元素 |
:lt(index) | 选择索引小于index的元素(index从0开始) | 集合元素 | $("input:lt(1)")选取索引小于1的input元素 |
:header | 选择所有的标题元素,例如h1,h2,h3等等 | 集合元素 | $(":header")选取所有的标题元素 |
:animated | 选择当前正在执行动画的元素 | 集合元素 | $("div:animated")选取正在执行动画的<div>元素 |
:focus | 选择所有获取焦点的元素 | 集合元素 | $(":focus")选取当前获取焦点的元素 |
b、内容过滤选择器
选择器 | 描述 | 返回 | 示例 |
:contains(text) | 选择包含文本内容为"text"的元素 | 集合元素 | $("div:contains('我')")选取含有文本"我"的<div>元素 |
:empty | 选择不包含子元素或者文本内容为空的元素 | 集合元素 | $("div:empty")选取不包含子元素或者文本内容为空的<div>元素 |
:has(selector) | 选择含有"匹配选择器的元素"的元素 | 集合元素 | $("div:has(p)")选取含有<p>元素的<div>元素 |
:parent | 选择包含子元素或者有文本内容的元素 | 集合元素 | $("div:parent")选取拥有子元素(包括文本元素)的<div>元素 |
c、可见性过滤器
选择器 | 描述 | 返回 | 示例 |
:hidden | 选择所有不可见的元素 | 集合元素 | $(":hidden")选择所有不可见得元素,包括<input type="hidden"/>,<div sytle="display:none;">,<div style="visibility:hidden">等元素,如果只想选择<input>元素,可以时间用$("input:hidden") |
:visible | 选择所有可见的元素 | 集合元素 | $("div:visible")选取所有可见的<div>元素 |
d、属性过滤选择器
属性过滤选择器是通过元素的属性来获取想过的元素的
选择器 | 描述 | 返回 | 示例 |
[attribute] | 选择拥有此属性的元素 | 集合元素 | $("div[id]")选取拥有id属性的<div>元素 |
[attribute=value] | 选择属性的值为value的元素 | 集合元素 | $("div[id=test]")选择id属性值等于test的<div>元素 |
[attribute!=value] | 选择属性的值不为value的元素 | 集合元素 | $("div[id=!test]")选择id属性值不等于test的<div>元素(注意:没有属性id的<div>元素也会被选取) |
[attribute^=value] | 选择属性的值以value开头的元素 | 集合元素 | $("div[id^=test]")选择id属性值以test开头的<div>元素 |
[attribute$=value] | 选择属性的值以value结束的元素 | 集合元素 | $("div[id$=test]")选择id属性值以test结尾的<div>元素 |
[attribute*=value] | 选择属性的值包含value的元素 | 集合元素 | $("div[id*=test]")选取id属性值含有test的<div>元素 |
[attribute|=value] | 选择属性的值等于value或以value为前缀(value后跟一个连字符"-")的元素 | 集合元素 | $("div[id|=test]")选取id属性值等于或以test为前缀的<div>元素 |
[attribute~=value] | 选择属性用空格分隔的值中包含一个value的元素 | 集合元素 | $("div[title~="uk"]")选取属性title用空格分开的值中包含字符uk的元素 |
[attribute1][attribute2][attributeN] | 用属性选择器合并成一个复合选择器,满足多个条件 | 集合元素 | $("div[id][title$='uk']")选取拥有id属性,并且属性title以uk结尾的<div>元素 |
e、子元素过滤选择器
选择器 | 描述 | 返回 | 示例 |
:nth-child(index/even/odd/equation) | 选取每个父元素下的第index个元素或者基偶元素。(index从1算起) | 集合元素 | :eq(index)只匹配一个元素,而:nth-child(index)为每一个父元素匹配子元素,而且:nth-child(index)的index是从1计算的,:eq(index)是从0计算的 |
:first-child | 选取每个父元素的第1个子元素 | 集合元素 | :first只返回单个元素,而:first-child选择器将为每一个父元素匹配第一个子元素,例如$("ul li:first-child")选取每个ul中的第一个li元素 |
:last-child | 选取每个父元素的最后一个子元素 | 集合元素 | :last只返回单个元素,而:last-child选择器为每一个父元素匹配最后一个子元素,例如$("ul li:last-child")选取每个ul中最后一个li元素 |
:only-child | 如果某个元素是父元素中唯一的元素,那么将会匹配,如果父元素中包含其他的元素,则不会匹配 | 集合元素 | $("ul li:only-child")在<ul>中选取是唯一子元素的li元素 |
:nth-child的详细解释
:nth-child(even)能选择每个父元素下的索引值是偶数的元素
:nth-child(odd)能选择每个父元素下的索引值是基数的元素
:nth-child(2)能选择每个父元素下的索引值是2的元素
:nth-child(3n)能选择每个父元素下索引值是3的倍数的元素(n从1开始)
:nth-child(3n+1)能选择每个父元素下索引值是(3n+1)的元素(n从1开始)
f、表单对象属性过滤选择器
选择器 | 描述 | 返回 | 示例 |
:enabled | 选择所有可用元素 | 集合元素 | $("#form1:enabled")选择id为form1的表单内所有的可用元素 |
:disabled | 选择所有不可用元素 | 集合元素 | $("#form1:disabled")选择id为form1的表单内所有的不可用元素 |
: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")选取所有的不可见元素 |