一、简介?
?? jQuery的选择器语法主要是基于CSS语法(早期版本还支持一部分XPath语法,因为效率等原因后期去除,但可以通过插件来使用),另外W3C积极推进js原生的Selector API 规定了querySelector和querySelectorAll方法,目前大部分主流浏览器提供支持(IE需8以上),jQuery内部也有应用querySelectorAll
?
相关知识参考:?
http://www.w3.org/TR/css3-selectors/
http://www.w3.org/TR/xpath20/
http://www.w3.org/TR/selectors-api/
?
二、分类
???jQuery选择器分为基本选择器、层次选择器、过滤选择器和表单选择器。
?? 1.基本选择器:jQuery中最常用的选择器,也是最简单的选择器,它通过id、class、和标签名来查找DOM元素。在网页中,每个id名称只能使用一次,class允许重复使用。 jQuery的基本选择器 选择器 描述 返回 示例 #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.层次选择器:如果想通过DOM元素之间的层次关系来获取特定元素,例如后代元素、子元素、相邻元素和兄弟元素等,那么层次选择器是一个非常好的选择。
?
jQuery的层次选择器 选择器 描述 返回 示例 $("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>兄弟元素 ? ? ? ?
?
?
?
??
3.过滤选择器:主要是通过特定的过滤规则来筛选出所需的DOM元素,过滤规则与CSS中的伪类选择器语法相同,即选择器都以一个冒号(:)开头。按照不同的过滤规则,过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤选择器。
?? 1) 基本过滤?
?
jQuery的基本过滤选择器 |
|||
选择器 |
描述 |
返回 |
示例 |
:first |
选取第1个元素 |
单个元素 |
$("div:first")选取所有<div>元素中第1个<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>元素(注:大于1,而不包括1) |
:lt(index) |
选取索引小于index的元素(index从0开始) |
集合元素 |
$("input:lt(1)")选取索引小于1的<input>元素(注:小于1,而不包括1) |
:header |
选取所有的标题元素,例如h1,h2,h3等等 |
集合元素 |
$(":header")选取网页中所有的<h1>,<h2>,<h3>...... |
:animated |
选取当前正在执行动画的所有元素 |
集合元素 |
$("div:animated")选取正在执行动画的<div>元素 |