jQuery选择器与CSS选择器相比较:
- 从写法上看,jQuery选择器继承CSS选择器的绝大部分风格,并且更加丰富而强大;
- 从功能上看,CSS选择器找到元素后添加样式,而jQuery选择器找到元素后添加行为;
- jQuery选择器具有跨浏览器兼容性。
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
#id | id选择器:根据给定的id匹配一个元素 | 单个元素 | $("text1")选取id为text1的元素 |
.class | 类选择器:根据给定的类名匹配元素,选取拥有此class的元素 | 集合元素 | $(".test")选取所有拥有class为test的元素 |
element | 标签选择器:根据给定的元素标签名匹配元素 | 集合元素 | $("a")选取所有<a>元素 |
* | 统配选择器:匹配所有元素 | 集合元素 | $("*")选取所有的元素 |
selector1,selector2,selectorN | 组合选择器:可以将多个选择器用“,”分隔开而组成一个组合选择器,会将每一个选择器匹配到的元素合都返回 | 集合元素 | $("div,#text1,p.myClass") 选取所有<div>标签,id为text1的元素,以及拥有class为myClass的<p>标签 |
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
ancestor descendant | 继承选择器:选取ancestor元素的所有descendant(后代)元素,无论直接的后代还是间接的后代 | 集合元素 | $("div span")选取<div>里面的所有<span>元素 |
parent>child | 包含选择器:选取parent元素下的直接child元素(子元素,或者被包含的元素,只能是parent直接包含的child元素) | 集合元素 | $("div>span")选取<div>里面一级元素名是<span>的元素 |
prev+next | 选取prev元素后紧接它的那个next元素;可用next()方法代替 | 集合元素 | $(".one+div")选取符合条件“前面元素拥有名为one的class,而后紧接<div>元素”的那个<div>元素 |
prev~siblingss | 选取prev元素后紧接它的所有silbings元素;可用nextAll()方法代替 | 集合元素 | $("#two~div")选取符合条件“前面元素id为two,后紧接<div>元素”的那些<div>元素 |
补充说明
- $("prev+next")选择器可以使用next()方法来代替,例如:$(".one+div")与$(".one").next("div")等效。
- $("prev~next")选择器可以使用nextAll()方法来代替,例如:$(".one~div")与$(".one").nextAll("div")等效。
- $("prev~next")选择器与siblings()方法有些像,但决不相同:$("prev~next")选择器只能选择prev元素后面同辈的next元素;而siblings()方法与前后位置无关,只要是同辈符合next的节点就都能够匹配。
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
:first | 匹配找到的第一个元素 | 单个元素 | $("div:first")选取所有<div>元素的第一个 |
:last | 匹配找到的最后一个元素 | 单个元素 | $("div:last")选取所有<div>元素的最后一个 |
:not(selector) | 排除与给定selector选择器匹配的元素后,选择剩下的元素 | 集合元素 | $("input:not(.myClass)")选取不拥有class为myClass的<input>元素 |
:even | 选取索引是偶数的所有元素(索引从0开始) | 集合元素 | $("input:even")选取索引是偶数的<input>元素 |
:odd | 选取索引是奇数的所有元素(索引从0开始) | 集合元素 | $("input:")选取索引是奇数的<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>元素 |
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
:contains(text) | 选取含有内容为“text”的元素 | 集合元素 | $("div:contains('我')")选取含有文本“我”的<div>元素 |
:empty | 选取不包含任何子元素或者文本的空元素 | 集合元素 | $("div:empty")选取不包含子元素(包括文本元素)的<div>元素 |
:has(selector) | 选取含有某子元素能够与selector选择器匹配的元素 | 集合元素 | $("div:has(p)")选取含有<p>元素的<div>元素 |
:parentt | 选取含有子元素或者文本的元素 | 集合元素 | $("div:parent")选取拥有子元素(包括文本元素)的<div>元素 |
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
:hidden | 选取所有不可见的元素 | 集合元素 | $(":hidden")选取所有不可见的元素。包括<input type="hidden"/>,<div style="display:none;">和<div style="visibility:hidden;">等形式。如果只想选取<input>元素,可以使用$("input:hidden") |
:visible | 选取所有可见的元素 | 集合元素 | $("div:visible")选取所有可见的<div>元素 |
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
[attribute] | 选取拥有此属性的元素 | 集合元素 | $("div[id]")选取拥有属性id的元素 |
[attribute=value] | 选取属性的值等于value的元素 | 集合元素 | $("div[title==test]")选取属性title为“test”的<div>元素 |
[attribute!=value] | 选取属性的值不等于value的元素 | 集合元素 | $("div[title!=test]")选取属性title不等于“test”的<div>元素(注意:没有属性title的<div>元素也会被选取) |
[attribute^=value] | 选取属性的值以value开始的元素 | 集合元素 | $("div[title^=test]")选取属性title以“test”开始的<div>元素 |
[attribute$=value] | 选取属性的值以value结束的元素 | 集合元素 | $("div[title$=test]")选取属性title以“test”结尾的<div>元素 |
[attribute*=value] | 选取属性的值包含value的元素 | 集合元素 | $("div[title*=test]")选取属性title包含有“test”的<div>元素 |
[selector1][selector2][selectorN] | 复合属性选择器:使用多个属性选择器合并成一个复合属性选择器,需要同时满足多个条件。 | 集合元素 | $("div[id][title$='test']")选取拥有属性id,并且属性title以“test”结尾的<div>元素 |
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
:nth-child(index/even/odd/equation) | 选取每个父元素下的第index个子元素/偶数索引子元素/奇数索引子元素(注意:index从1算起) | 集合元素 | |
:first-child | 选取每个父元素的首个子元素 | 集合元素 | $("ul li :first-child")选取每个<ul>中第一个<li>元素 |
:last-child | 选取每个父元素的最后一个子元素 | 集合元素 | $("ul li :last-child")选取每个<ul>中第一个<li>元素 |
:only-child | 如果某个元素是它父元素中唯一的子元素,那么将会匹配。如果父元素中还含有其它元素,则不会被匹配 | 集合元素 | $("ul li :only-child")选取只含有一个<li>的<ul>中的<li>元素 |
补充说明
- :nth-child(even)能够选取每个父元素下索引值为偶数的元素。
- :nth-child(odd)能够选取每个父元素下索引值为奇数的元素。
- :nth-child(2)能够选取每个父元素下索引值为2的元素(注意:索引值从1开始)。
- :nth-child(3n)能够选取每个父元素下索引值为2的元素(注意:索引值从1开始)。
- :nth-child(3n+1)能够选取每个父元素下索引值为2的元素(注意:索引值从1开始)。
- 注意:与基本过滤选择器的不同,基本过滤选择器的:even、:odd、:eq(index)、:gt(index)、:lt(index)的索引都是从0开始;而子选择器的:nth-child(index/even/odd/equation)的索引都是从1开始。
- 注意:这些子元素过滤选择器与前面父选择器之间必须有空格。
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
:enabled | 选取所有可用的元素 | 集合元素 | $("#form1:enabled")选取id为“form1”的表单内的所有可用元素 |
:disabled | 选取所有不可用的元素 | 集合元素 | $("#form2:disabled")选取id为“form2”的表单内的所有不可用元素 |
:checked | 选取所有被选中的元素(适用:单选框、复选框) | 集合元素 | $("input:checked")选取所有被选中的<input>元素 |
:selected | 选取所有被选中的option(适用:下拉列表) | 集合元素 | $("select:selected")选取所有<select>元素中的被选中option |
选择器 | 说明 | 返回值 | 示例 |
---|---|---|---|
:input | 选取所有的input元素(包括<input>、<textarea>、<select>,以及<button>元素) | 集合元素 | $(":input")选取所有的input元素 |
:text | 选取所有的单行文本框 | 集合元素 | $(":text")选取所有的单行文本框 |
:password | 选取所有的密码框 | 集合元素 | $(":password")选取所有的密码框 |
:radio | 选取所有的单选框 | 集合元素 | $(":radio")选取所有的单选框 |
:checkbox | 选取所有的复选框 | 集合元素 | $(":checkbox")选取所有的复选框 |
:submit | 选取所有的提交按钮(包括<input type="submit"/>,<button></button>两种形式) | 集合元素 | $(":submit")选取所有的提交按钮 |
:image | 选取所有的图像域(特指<input type="image"/>,不是<img>) | 集合元素 | $(":image")选取所有的图像域 |
:reset | 选取所有的重置按钮 | 集合元素 | $("reset")选取所有的重置按钮 |
:button | 选取所有的按钮(包括<input type="button"/>,<button></button>两种形式) | 集合元素 | $(":button")选取所有的按钮 |
:file | 选取所有的上传域 | 集合元素 | $(":file")选取所有的上传域 |
:hidden | 选取所有不可见元素(包括<input type="hidden"/>,<div style="display:none;">和<div style="visibility:hidden;">等形式) | 集合元素 | $(":hidden")选取所有不可见元素 |
补充说明
- 注意$("#form1 :input")与$("#form1 input")不同之处:$("#form1 :input")匹配id为form1的表单内所有<input>、<button>、<textarea>、<select>四种元素,而$("#form1 input")只匹配id为form1的表单内所有<input>这一种元素。
选择器中含有空格的问题
按照CSS选择器的定义,CSS选择器中有空格表示继承选择器,或者是后代选择器。而jQuery选择器基本上继承了CSS选择器,也就继承了这种空格的用法。在实际应用中需要非常注意选择器中空格的作用,否则会得到不同的结果。实际上笔者对于这一点也是比较生疏的,欢迎大家斧正。