【Jquery系列】之Jquery 选择器


1   概述

 本篇文章为穿插文章,ASP.NET MVC系列目前写了如下几篇:

  • 详解google Chrome浏览器(理论篇)
  • 详解Google Chrome浏览器(操作篇)(上)
  • 详解Google Chrome浏览器(操作篇)(下)
  • .NET 开发环境搭建
  • 详解ASP.NET MVC 路由
  • 详解ASP.NET MVC 控制器

写该篇文章主要目的是为接下来的ASP.NET MVC 系列,如页面之间传值,ADO.NET和EF,Bootstrap等打基础,本篇文章比较基础,但比较全面,非常适合基础快速扫盲。

2   基本选择器

2.1  一览表

2.2  示例代码

 (1)id选择器

将id为lastname元素的背景色设置为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15 
16 
17     
"lastname">id为lastname的选择器
18 19

(2)类选择器

将class为intro元素的背景色设置为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15 
16 
17     
class="intro">div选择器测试
18

class="intro">p测试选择器

19 20

(3)元素选择器

将p元素的背景色设置为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15 
16 
17      

p测试选择器

18 19

(4)所有选择器

遍历body下的所有元素,将其背景色设置为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15 
16 
17     
选择器测试
18

p元素

19 20

(5)并列选择器

 将元素p和元素div背景色设置为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15 
16 
17     
选择器测试
18

p元素

19 20

3   层次选择器

3.1 一览表

3.2 示例代码

(1)parent>child(直系子元素,即直接下一代元素)

设置div元素的第一代元素为span的元素的背景色为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15 
16 
17     
18 DOM树,DIV第一代 19

20 DOM树,第二代 21

22 DOM树,DIV第一代 23
24 25

测试结果:

结果分析:根据如上代码画出的DOM树如下,可以很清晰看出,DIV有三个直接孩子,即第一代span,p,span,代码中div>span,表示div下的直接第一代span,因此,测试结果就不难理解了。

(2)prev+next(prev元素的下一个兄弟元素,等同于next()方法)

设置类为intro元素的下一个兄弟元素背景色为蓝色

 1  
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
16 
17 
18     
1
19

class="intro">2

20
3
21
4
22 class="item">5 23
6
24 25

测试结果:

结果分析:根据如上代码画出DOM树如下图,测试结果显而易见。

(3)prev~siblings(prev元素的所有兄弟元素,等同于nextAll()方法)

 设置类为intro元素之后的所有兄弟元素为div元素的背景色为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G0
17
class="intro">G1
18
G2
19 G3 20
G4
21 22

测试结果:

分析测试结果:根据如上代码画出DOM树如下图,测试结果显而易见。

4   过滤选择器

4.1 基本过滤选择器

4.1.1  一览表

4.1.2  代码示例

(1):first(选取第一个元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     G1
17     G2
18     G3
19 
20 

测试结果:

(2):last(选取最后一个元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     G1
17     G2
18     G3
19 
20 

测试结果:

(3):not(取非元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G1
17
class="wrap">G2
18 19

但是,请注意下面的代码:当G1所在div和G2所在div是父子关系时,G1和G2都会变色。

1 
2     G1   
class="wrap">G2
3

(4):even(索引为偶数,索引 index从0开始)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G1
17
G2
18
G3
19
G4
20 21

测试结果:

(5):odd(索引为奇数,索引 index从0开始)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G1
17
G2
18
G3
19
G4
20 21

测试结果:

(6):eq(x)(取指定索引的元素,x为从0开始的索引)

设置索引为2的div元素背景为蓝色

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G1
17
G2
18
G3
19
G4
20 21

测试结果:

(7):lt(x))(取小于指定索引的元素,x为从0开始的索引)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G1
17
G2
18
G3
19
G4
20 21

测试结果:

(8):gt(x))(取大于指定索引的元素,x为从0开始的索引)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     
G1
17
G2
18
G3
19
G4
20 21

测试结果:

(8):header(取h1-h6标题元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16     

测试H1标题

17
G1
18
G2
19
G3
20

测试h2标题

21

测试h3标题

22

测试h4标题

23
G4
24
测试h5标题
25
测试h6标题
26 27

测试结果:

(9):animated(所有动画元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
21     
30 
31 
32     
33
"box">
34
35 36 37

测试结果:

 

4.2 内容过滤选择器

4.2.1 一览表

4.2.2 示例代码

(1):contains(text)(取包含text文本的元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
G1
18
G2
19
G3
20 21

测试结果:

(2):empty(取不包含子元素或文本为空的元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
G1
18
G2
19
G3
20
21 22

测试结果:

(3) :has(selector)(取选择器匹配的元素)

即使span不是div的直系子元素,也会生效

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15     
16 
17 
18     
19

20 A     B 21

22
23 24

测试结果:

(4):parent(取包含子元素或文本的元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
    18
  1. 19
  2. A
  3. 20
  4. 21
  5. D
  6. 22
23 24

测试结果:

4.3 可见性过滤选择器

4.3.1 一览表

4.3.2 示例代码

(1):hidden(取不可见的元素)

匹配display:none,,visibility:hidden,capacity:0元素

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
35 
36 
37     
class="hid-1">display: none
38
class="hid-2">visibility: hidden
39 "hidden" value="hello" /> 40 41

测试结果:

(2):visible(取可见的元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
"display:none">G1
18
G2
19
"display:none">G3
20
G4
21 22 23 24 25 26

测试结果:

4.4 属性过滤选择器

4.4.1 一览表

4.4.2 代码示例

(1)[attribute](取拥有attribute属性的元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
G1
18
G2
19
G3
20
class="div4">G4
21 22 23 24 25 26

测试结果:

(2)[attribute = value](取attribute属性值等于value)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
G1
18
G2
19
class="div3">G3
20
class="div4">G4
21 22 23 24 25 26

测试结果:

(3) [attribute != value](取attribute属性值不等于value的元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
G1
18
G2
19
class="div3">G3
20
class="div4">G4
21 22 23 24 25 26

测试结果:

(4)[attribute $= value](attribute属性值以value结束)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
"first_div">G1
18
"second_div">G2
19
class="div3" title="3div">G3
20
class="div4">G4
21 22 23

测试结果:

(5))[attribute^= value](attribute属性值以value开始)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
"first_div">G1
18
"second_div">G2
19
class="div3" title="3div">G3
20
class="div4">G4
21 22 23 24 25 26

测试结果:

(6)[attribute *= value](attribute属性值包含value值)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
"first_div">G1
18
"second_div">G2
19
class="div3" title="3div">G3
20
class="div4">G4
21 22 23

测试结果:

注释:在属性选择器中,^$符号和正则表达式的开始结束符号表示的含义是一致的,*模糊匹配,类似于sql中的like '%str%'。

(7)[selector1][selector2](复合型属性过滤器,同时满足多个条件)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14     
15 
16 
17     
G1
18
G2
19
class="div3" title="3div">G3
20
class="div4">G4
21 22 23 24 25 26

测试结果:

4.5 子元素过滤选择器

4.5.1 一览表

4.5.2 代码示例

(1)first-child(表示匹配的第一个元素)和last-child(表示匹配的最后一个子元素)

 需要大家注意的是,:fisrst和:last返回的都是单个元素,而:first-child和:last-child返回的都是集合元素。举个 例子:div:first返回的是整个DOM文档中第一个div元素,而div:first-child是返回所有div元素下的第一个元素合并后的集 合。

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
14 
15 
16      
17
1
18
2
19

3

20
21
4
22
last
23 24

测试结果:

(3)only-child(当某个元素有且仅有一个子元素时,:only-child才会生效)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
13 
14 
15      
16
1
17
2
18

3

19
20
4
21
last 22
ddd
23
24 25

测试结果:

(4)nth-child

看到这个就想起英文单词里的,fourth, fifth, sixth……,nth表示第n个,:nth-child就表示第n个child元素。要注意的是,这儿的n不像eq(x)、gt(x)或lt(x)是从 0开始的,它是从1开始的,英文里好像也没有zeroth这样的序号词吧。

:nth-child有三种用法:

1) :nth-child(x),获取第x个子元素
2) :nth-child(even)和:nth-child(odd),从1开始,获取第偶数个元素或第奇数个元素
3) :nth-child(xn+y),x>=0,y>=0。例如x = 3, y = 0时就是3n,表示取第3n个元素(n>=0)。实际上xn+y是上面两种的通项式。(当x=0,y>=0时,等同于:hth- child(x);当x=2,y=0时,等同于nth-child(even);当x=2,y=1时,等同于:nth-child(odd))

4.6 表单对象属性过滤选择器

4.6.1 一览表

4.6.2 代码示例

(1):enabled和:disabled(取可用或不可用元素)

:enabled和:diabled的匹配范围包括input, select, textarea

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15     
16 
17 
18     
19 "text" value="可用的文本框" /> 20
21
22 "text" disabled="disabled" value="不可用的文本框" /> 23
24
25 26
27
28 <select disabled="disabled"> 29 30 31 select> 32
33 34

测试结果:

(2):checked(取选中的单选框或复选框元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
15     
16 
17 
18     "radio" name="sex" value="male" checked="checked" /> Male
19     
20 "radio" name="sex" value="female" /> Female 21
22 I have a bike: 23 "checkbox" name="vehicle" value="Bike" /> 24
25 I have a car: 26 "checkbox" name="vehicle" value="Car" checked="checked" /> 27
28 I have an airplane: 29 "checkbox" name="vehicle" value="Airplane" /> 30 31 32 33

(3):selected(取下拉列表被选中的元素)

 1 
 2 
 3 
 4 
11 
12 
13 
14 <select multiple="multiple">
15   
16   selected">Saab
17   
18   
19 select>
20 
21 22 23

5   表单选择器

5.1 一览表

5.2 测试代码

(1):input()(选择所有input元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
13 
14 
15     
""> 16 Name: "text" name="user" /> 17
18 Password: "password" name="password" /> 19
20 21 "button" value="Another useless button" /> 22
23 "reset" value="Reset" /> 24 "submit" value="Submit" /> 25
26
27 28

测试结果:

(2):text(选取所有text元素)

 1 
 2 
 3 
 4 
 5     "viewport" content="width=device-width" />
 6     
 7     JQuery函数
 8     
13 
14 
15     
""> 16 Name: "text" name="user" /> 17
18 Password: "password" name="password" /> 19
20 21 "button" value="Another useless button" /> 22
23 "reset" value="Reset" /> 24 "submit" value="Submit" /> 25
26
27 28

测试结果:

(3):select和:button

(4)其他表单元素比较简单,在此不列举。

6   参考文献

【01】http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp

【02】http://jqueryui.com/

【03】http://www.cnblogs.com/hulang/archive/2011/01/12/1933771.html

【04】http://www.jb51.net/article/57753.htm

【05】http://www.jquery123.com/

 

7   版权

  • 感谢您的阅读,若有不足之处,欢迎指教,共同学习、共同进步。
  • 博主网址:http://www.cnblogs.com/wangjiming/。
  • 极少部分文章利用读书、参考、引用、抄袭、复制和粘贴等多种方式整合而成的,大部分为原创。
  • 如您喜欢,麻烦推荐一下;如您有新想法,欢迎提出,邮箱:2016177728@qq.com。
  • 可以转载该博客,但必须著名博客来源。