我们在使用jQuery的时候,需要做的第一件事情就是选择被操作的页面元素。jQuery提供了强大的选择器语法,使我们可以简单方便的指定任何元素的集合。
jQuery的选择器采用CSS的语法,并且扩展了一些用于选择元素的自定义方法,使我们可以执行复杂而又常见的任务。
jQuery的选择器可以分为基本选择器、过滤选择器和表单选择器几大类。
jQuery的基本选择器
在jQuery的基本选择器中,又分为基本CSS选择器、层次选择器和特性选择器几大类。
使用CSS选择器来选取页面中的元素对于我们来说是非常熟悉的事情,我们可以通过ID,class类或元素的标签来选择元素。例如:
a —— 选择页面中的所有a元素 #foo —— 选择id为foo的元素 .bar —— 选择页面中所有class为bar的元素
这些选择器还可以混合使用,通过组合可以精确的选择一些元素的集合。
在jQuery中,只需要将这些CSS选择器放置在$()
包装器中,就变成了jQuery选择器。例如:
$('.bar') —— 选择页面中所有class为bar的元素
另外,jQuery选择器完全兼容CSS3,在样式表中,能够被兼容浏览器所选择的元素,都可以被jQuery引擎选中。
为了了解这些选择器,我们制作了一个DEOM,你可以下载这个DEMO,或在线查看效果。在这个DEMO中,我们通过不同的jQuery选择器来选择元素,被选择的元素的HTML代码会高亮显示,这样可以直观的观察jQuery选择器的效果。这个DEOM使用的HTML代码如下:
<div class="first"></div> <nav> <div id="myId"></div> <section> <div class="second"></div> <div data-bind="demo"></div> <div data-bind="another demo"></div> </section> </nav> <span class="second"></span>
基本选择器
选择器 | 返回值 | 描述 |
* | 返回集合 | 选取页面中的所有元素 |
.class | 返回集合 | 选择指定的class类的所有元素 |
#id | 返回单个元素 | 选择指定的ID的元素 |
element | 返回集合 | 选择所有匹配标签的元素 |
N1,N2,... | 返回集合 | 选择所有匹配标签(N1,N2,...)的元素 |
*选择器
*选择器选取页面中的所有元素。
类选择器
类选择器选择指定的class类的所有元素。例如:要选择所有带.second
类的元素:
$(".second").highlight();
ID选择器
ID选择器选择指定的ID的元素。例如:要选择带#myId
类的元素:
$("#myId").highlight();
元素选择器(E)
元素选择器选择所有匹配标签的元素。例如:匹配页面中的<section>
元素会得到下图的效果:
$("section").highlight();
群组选择器(N1,N2,...)
群组选择器选择所有匹配标签(N1,N2,...)的元素。例如:匹配页面中的<span>
元素和div.myId
元素会得到下图的效果:
$("span,div#myId").highlight();
层次选择器
选择器 | 返回值 | 描述 |
E F | 返回集合 | 选择元素E里面的所有标签名为F的所有元素 |
E > F | 返回集合 | 选择标签名称为F,并且作为E的直接子元素的所有元素 |
E ~ F | 返回集合 | 选择元素E后面的所有为E兄弟节点的F元素 |
E + F | 返回集合 | 选择元素E后面的所有为E的相邻兄弟节点的F元素 |
子元素选择器(E F)
子元素选择器(E F
)会选择元素E里面的所有标签名为F的所有元素。例如:要选择<nav>
元素中的所有<div>
元素。
$("nav div").highlight();
直接子元素选择器(E > F)
直接子元素选择器(E > F
)会选择标签名称为F,并且作为E的直接子元素的所有元素。例如:要选择<nav>
元素的所有<div>
直接子元素。
$("nav > div").highlight();
兄弟节点选择器(E ~ F)
兄弟节点选择器(E ~ F
)会选择元素E后面的所有为E兄弟节点的F元素。例如选择div.three
元素的兄弟节点元素。
$("div.three ~ div").highlight();
相邻兄弟节点选择器(E + F)
相邻兄弟节点选择器(E + F
)会选择元素E后面的所有为E的相邻兄弟节点的F元素。例如选择div.three
元素的相邻兄弟节点元素。
$("div.three + div").highlight();
特性选择器
选择器 | 返回值 | 描述 |
E[A=V] | 返回集合 | 匹配特性A的值等于A的所有E元素 |
E[A^=V] | 返回集合 | 匹配特性A的值以A开头的所有E元素 |
E[A$=V] | 返回集合 | 匹配特性A的值以A结尾的所有E元素 |
E[A*=V] | 返回集合 | 匹配特性A的值包含A的所有E元素 |
E[A=V]
E[A=V]
选择器匹配特性A的值等于A的所有E元素。例如:匹配data-bind
属性值等于demo
的所有元素。
$("[data-bind='demo']").highlight();
E[A^=V]
E[A^=V]
选择器匹配特性A的值以A开头的所有E元素。例如:匹配data-bind
属性值以another
开头的所有元素。
$("[data-bind^='another']").highlight();
E[A$=V]
E[A$=V]
选择器匹配特性A的值以A结尾的所有E元素。例如:匹配data-bind
属性值以demo
结尾的所有元素。
$("[data-bind$='demo']").highlight();
E[A*=V]
E[A*=V]
选择器匹配特性A的值包含A的所有E元素。例如:匹配data-bind
属性值包含demo
的所有元素。
$("[data-bind*='demo']").highlight();