jQuery选择器与CSS选择器相比较:

  • 从写法上看,jQuery选择器继承CSS选择器的绝大部分风格,并且更加丰富而强大;
  • 从功能上看,CSS选择器找到元素后添加样式,而jQuery选择器找到元素后添加行为;
  • jQuery选择器具有跨浏览器兼容性。

 

1 基本选择器(Basic)
选择器说明返回值示例
#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>标签

 

2 层次选择器(Hierarchy)
选择器说明返回值示例
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的节点就都能够匹配。

 

3.1 基本过滤选择器(Basic Filter)
选择器说明返回值示例
: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>元素

 

3.2 内容过滤选择器(Content Filter)
选择器说明返回值示例
:contains(text) 选取含有内容为“text”的元素 集合元素 $("div:contains('我')")选取含有文本“我”的<div>元素
:empty 选取不包含任何子元素或者文本的空元素 集合元素 $("div:empty")选取不包含子元素(包括文本元素)的<div>元素
:has(selector) 选取含有某子元素能够与selector选择器匹配的元素 集合元素 $("div:has(p)")选取含有<p>元素的<div>元素
:parentt 选取含有子元素或者文本的元素 集合元素 $("div:parent")选取拥有子元素(包括文本元素)的<div>元素

 

3.3 可见性过滤选择器(Visibility Filter)
选择器说明返回值示例
:hidden 选取所有不可见的元素 集合元素 $(":hidden")选取所有不可见的元素。包括<input type="hidden"/>,<div style="display:none;">和<div style="visibility:hidden;">等形式。如果只想选取<input>元素,可以使用$("input:hidden")
:visible 选取所有可见的元素 集合元素 $("div:visible")选取所有可见的<div>元素

 

3.4 属性过滤选择器(Attribute Filter)
选择器说明返回值示例
[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>元素

 

3.5 子元素过滤选择器(Child Filter)
选择器说明返回值示例
: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开始。
  • 注意:这些子元素过滤选择器与前面父选择器之间必须有空格。

 

3.6 表单对象属性过滤选择器(Form Filter)
选择器说明返回值示例
:enabled 选取所有可用的元素 集合元素 $("#form1:enabled")选取id为“form1”的表单内的所有可用元素
:disabled 选取所有不可用的元素 集合元素 $("#form2:disabled")选取id为“form2”的表单内的所有不可用元素
:checked 选取所有被选中的元素(适用:单选框、复选框) 集合元素 $("input:checked")选取所有被选中的<input>元素
:selected 选取所有被选中的option(适用:下拉列表) 集合元素 $("select:selected")选取所有<select>元素中的被选中option

 

4 表单选择器(Form)
选择器说明返回值示例
: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选择器,也就继承了这种空格的用法。在实际应用中需要非常注意选择器中空格的作用,否则会得到不同的结果。实际上笔者对于这一点也是比较生疏的,欢迎大家斧正。

posted on 2012-10-02 00:39  萨迦狐  阅读(146)  评论(0编辑  收藏  举报