一直在学习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")选取所有的不可见元素