选择器是jQuery的根基,在jQuery中,对事件处理,遍历DOM和Ajax操作都依赖于选择器。如果能熟练的使用选择器,不仅能简化代码,而且可以达到事半功倍的效果。
jQuery中的选择器完全继承了CSS的风格,利用jQuery选择器,可以非常便捷和快速的找出特定的DOM元素,然后为它们添加相应的行为,而无需担心浏览器是否支持这一选择器。
为了便于记忆和学习,我们把jQuery选择器分为以下几类:
- 基本选择器
- 层次选择器
- 过滤选择器
-
- 基本过滤选择器
- 内容过滤选择器
- 可见性过滤选择器
- 属性过滤选择器
- 子元素过滤选择器
- 表单对象属性过滤选择器
- 表单选择器
为了演示这些选择器,首先手写一个包含各种DOM元素如文本框,多选框,DIV等的HTML页面
1 2 <div class="one" id="one" > 3 id为one,class为one的div 4 <div class="mini">class为minidiv> 5 div> 6 7 <div class="one" id="two" title="test" > 8 id为two,class为one,title为test的div. 9 <div class="mini" title="other">class为mini,title为otherdiv> 10 <div class="mini" title="test">class为mini,title为testdiv> 11 div> 12 13 <div class="one"> 14 <div class="mini">class为minidiv> 15 <div class="mini">class为minidiv> 16 <div class="mini">class为minidiv> 17 <div class="mini">div> 18 div> 19 20 21 22 <div class="one"> 23 <div class="mini">class为minidiv> 24 <div class="mini">class为minidiv> 25 <div class="mini">class为minidiv> 26 <div class="mini" title="test">class为mini,title为testdiv> 27 div> 28 29 30 <div style="display:none;" class="none">style的display为"none"的divdiv> 31 32 <div class="hide">class为"hide"的divdiv> 33 34 <div> 35 包含input的type为"hidden"的div<input type="hidden" size="8"/> 36 div> 37 38 39 <span id="mover">正在执行动画的span元素.span>
一、基本选择器:通过元素id,class和标签名等来查找Dom元素
1)$("#id") 根据给定的ID匹配一个元素,返回单个元素 $("#name")选取Id为test的元素
2)$(".class") 根据给定的类名匹配元素 返回集合元素 $(".class")选取所有class为class的元素
3)$("element") 根据给定的元素名匹配元素,返回集合元素 $("input")选取所有的input元素
4)$("*") 匹配所有的元素,返回集合元素,$("*")选取所有的元素
5)$("selector1,selector2,...,selectorN") 将每一个选择器匹配到的元素合并后返回集合元素, $("div,span,p.myClass")选取所有
标签的一组元素
示例:
1 //选择 id为 one 的元素 2 $('#one').css("background","#bfa"); 3 //选择 class 为 mini 的所有元素 4 $('.mini').css("background","#bfa"); 5 //选择 元素名是 div 的所有元素 6 $('div').css("background","#bfa"); 7 //选择 所有的元素 8 $('*').css("background","#bfa"); 9 //选择 所有的span元素和id为two的div元素 10 $('span,#two').css("background","#bfa");
二、层次选择器:通过Dom元素之间的层次关系来获取特定元素,例如后代元素,子元素,相邻元素和同辈元素
1)$("ancestor descendant") 获得ancestor元素里面的所有descendant(后代)元素,$("div span")选取
2)$("parent>child") 选取parent元素下的child(子)元素,返回集合元素 $("div span")选取
注解:和$("ancestor descendant")有区别,$("ancestor descendant")选择的是后代元素
3)$("prev+next") 选取紧接在prev元素后的next元素,返回集合元素,$(".one+div")选取class为one的下一个
4)$("prev~siblings") 选取prev元素之后的所有siblings元素,$("#two~div")选取Id为two的元素后面的所有
注解:可以使用next()方法来替代$('prev+next')选择器 $(".one").next("div");可以使用nextAll()方法来替代$("prev~siblings")选择器 $("#two").nextAll(div)
示例:
1 //选择 body内的所有div元素. 2 $('body div').css("background","#bbffaa"); 3 //在body内的选择 元素名是div 的子元素. 4 $('body > div').css("background","#bbffaa"); 5 //选择 所有class为one 的下一个div元素. 6 $('.one + div').css("background","#bbffaa"); 7 //选择 id为two的元素后面的所有div兄弟元素. 8 $('#two ~ div').css("background","#bbffaa");
三、过滤选择器:通过特定的过滤规则来筛选出所需要的Dom元素,按照不同的过滤规则,过滤选择器可以分为基本过滤,内容过滤,可见性过滤,属性过滤,子元素过滤和表单对象属性过滤选择器
1)基本过滤选择器
1)$(":first") 选取第一个元素,$("div:first")选取所有
2)$(":last")选取最后一个元素,$("div:last")选取所有
3)$(":not(selector)")去除所有与给定选择器匹配的元素,$("input:not(.myClass)")选取class不是myClass的元素。
4)$(":even")选取索引是偶数的所有元素,索引从0开始,$("input:even")选取索引是偶数的元素
5)$(":odd")选取索引是奇数的所有元素,索引从0开始,$("input:odd")选取索引是奇数的元素
6)$(":eq(index)")选取索引等于index的元素,(index从0开始),$("input:eq(1)")选取索引等于1的元素
7)$(":gt(index)")选取索引大于index的元素,(index从0开始),$("input:gt(1)")选取索引大于1的元素(大于1,而不包括1)
8)$(":lt(index)")选取索引小于index的元素,(index从0开始),$("input:lt(1)")选取索引小于1的元素(小于1,而不包括1)
9)$(":header")选取所有的标题元素,例如:h1,h2,h3等等,$(":header")选取网页中的所有的
,,...
10)$(":animated")选取当前正在执行动画的所有元素,$("div:animated")选取正在执行动画的元素。
11)$(":focus")选取当前获取焦点的元素,$(":focus")选取当前获取焦点的元素
示例:
1 //选择第一个div元素.
2 $('div:first').css("background","#bfa");
3 //选择最后一个div元素.
4 $('div:last').css("background","#bfa");
5 //选择class不为one的 所有div元素.
6 $('div:not(.one)').css("background","#bfa");
7 //选择 索引值为偶数 的div元素。
8 $('div:even').css("background","#bfa");
9 //选择 索引值为奇数 的div元素。
10 $('div:odd').css("background","#bfa");
11 //选择 索引等于 3 的元素
12 $('div:eq(3)').css("background","#bfa");
13 //选择 索引大于 3 的元素
14 $('div:gt(3)').css("background","#bfa");
15 //选择 索引小于 3 的元素
16 $('div:lt(3)').css("background","#bfa");
17 //选择 所有的标题元素.比如h1, h2, h3等等...
18 $(':header').css("background","#bfa");
19 //选择 当前正在执行动画的所有元素.
20 $(':animated').css("background","#bfa");
2)内容过滤选择器:主要体现在它所包含的子元素或者文本内容上面
1)$(":contains(text)")选取含有文本为"text"的元素,$("div:contains('我')")选取含有文本"我"的
元素
2)$(":empty")选取不包含子元素或者文本的空元素,$("div:empty")选取不包含子元素(包括文本元素)的
空元素
3)$(":has(selector)")选取含有选择器所匹配的元素的元素,$("div:has(p)")选取含有
元素的
元素
4)$(":parent")选取含有子元素或者文本的元素,$("div:parent")选取拥有子元素(包括文本元素)的
元素
示例:
1 //选取含有文本"di"的div元素.
2 $('div:contains(di)').css("background","#bbffaa");
3 //选取不包含子元素(或者文本元素)的div空元素.
4 $('div:empty').css("background","#bbffaa");
5 //选取含有class为mini元素 的div元素.
6 $('div:has(.mini)').css("background","#bbffaa");
7 //选取含有子元素(或者文本元素)的div元素.
8 $('div:parent').css("background","#bbffaa");
3)可见性过滤选择器:根据元素的可见和不可见状态来选择相应的元素
1)$(":hidden")选取所有不可见的元素,$(":hidden")选取所有不可见的元素,包括,
...
10)$(":animated")选取当前正在执行动画的所有元素,$("div:animated")选取正在执行动画的元素。
11)$(":focus")选取当前获取焦点的元素,$(":focus")选取当前获取焦点的元素
示例:
1 //选择第一个div元素.
2 $('div:first').css("background","#bfa");
3 //选择最后一个div元素.
4 $('div:last').css("background","#bfa");
5 //选择class不为one的 所有div元素.
6 $('div:not(.one)').css("background","#bfa");
7 //选择 索引值为偶数 的div元素。
8 $('div:even').css("background","#bfa");
9 //选择 索引值为奇数 的div元素。
10 $('div:odd').css("background","#bfa");
11 //选择 索引等于 3 的元素
12 $('div:eq(3)').css("background","#bfa");
13 //选择 索引大于 3 的元素
14 $('div:gt(3)').css("background","#bfa");
15 //选择 索引小于 3 的元素
16 $('div:lt(3)').css("background","#bfa");
17 //选择 所有的标题元素.比如h1, h2, h3等等...
18 $(':header').css("background","#bfa");
19 //选择 当前正在执行动画的所有元素.
20 $(':animated').css("background","#bfa");
2)内容过滤选择器:主要体现在它所包含的子元素或者文本内容上面
1)$(":contains(text)")选取含有文本为"text"的元素,$("div:contains('我')")选取含有文本"我"的
元素
2)$(":empty")选取不包含子元素或者文本的空元素,$("div:empty")选取不包含子元素(包括文本元素)的
空元素
3)$(":has(selector)")选取含有选择器所匹配的元素的元素,$("div:has(p)")选取含有
元素的
元素
4)$(":parent")选取含有子元素或者文本的元素,$("div:parent")选取拥有子元素(包括文本元素)的
元素
示例:
1 //选取含有文本"di"的div元素.
2 $('div:contains(di)').css("background","#bbffaa");
3 //选取不包含子元素(或者文本元素)的div空元素.
4 $('div:empty').css("background","#bbffaa");
5 //选取含有class为mini元素 的div元素.
6 $('div:has(.mini)').css("background","#bbffaa");
7 //选取含有子元素(或者文本元素)的div元素.
8 $('div:parent').css("background","#bbffaa");
3)可见性过滤选择器:根据元素的可见和不可见状态来选择相应的元素
1)$(":hidden")选取所有不可见的元素,$(":hidden")选取所有不可见的元素,包括,
11)$(":focus")选取当前获取焦点的元素,$(":focus")选取当前获取焦点的元素
示例:
1 //选择第一个div元素. 2 $('div:first').css("background","#bfa"); 3 //选择最后一个div元素. 4 $('div:last').css("background","#bfa"); 5 //选择class不为one的 所有div元素. 6 $('div:not(.one)').css("background","#bfa"); 7 //选择 索引值为偶数 的div元素。 8 $('div:even').css("background","#bfa"); 9 //选择 索引值为奇数 的div元素。 10 $('div:odd').css("background","#bfa"); 11 //选择 索引等于 3 的元素 12 $('div:eq(3)').css("background","#bfa"); 13 //选择 索引大于 3 的元素 14 $('div:gt(3)').css("background","#bfa"); 15 //选择 索引小于 3 的元素 16 $('div:lt(3)').css("background","#bfa"); 17 //选择 所有的标题元素.比如h1, h2, h3等等... 18 $(':header').css("background","#bfa"); 19 //选择 当前正在执行动画的所有元素. 20 $(':animated').css("background","#bfa");
2)内容过滤选择器:主要体现在它所包含的子元素或者文本内容上面
1)$(":contains(text)")选取含有文本为"text"的元素,$("div:contains('我')")选取含有文本"我"的
2)$(":empty")选取不包含子元素或者文本的空元素,$("div:empty")选取不包含子元素(包括文本元素)的
3)$(":has(selector)")选取含有选择器所匹配的元素的元素,$("div:has(p)")选取含有
元素的
4)$(":parent")选取含有子元素或者文本的元素,$("div:parent")选取拥有子元素(包括文本元素)的
示例:
1 //选取含有文本"di"的div元素. 2 $('div:contains(di)').css("background","#bbffaa"); 3 //选取不包含子元素(或者文本元素)的div空元素. 4 $('div:empty').css("background","#bbffaa"); 5 //选取含有class为mini元素 的div元素. 6 $('div:has(.mini)').css("background","#bbffaa"); 7 //选取含有子元素(或者文本元素)的div元素. 8 $('div:parent').css("background","#bbffaa");
3)可见性过滤选择器:根据元素的可见和不可见状态来选择相应的元素
1)$(":hidden")选取所有不可见的元素,$(":hidden")选取所有不可见的元素,包括,