jQuery选择器简介
选择器的应用体现了jQuery的一个设计思想,即获取(选择)网页中的元素,然后根据实际需求对元素进行各种操作。
jQuery模仿CSS选择器实现了jQuery选择器,然后通过jQuery选择器来获取元素,不仅让获取元素的方式更加多样化,而且可以在获取元素后为元素添加样式、行为。
jQuery选择器语法: $(selector);
//根据id值获取元素
$(‘#id的值’)
//根据元素的名称获取元素
$(‘元素的名称’)
selector代表jQuery选择器,代码执行后,返回一个jQuery对象(类数组)。
jQuery选择器按照功能可以分为基本选择器、层次选择器、过滤选择器。
基本选择器
基本选择器包括id选择器、类选择器。元素选择器、通配符选择器。
| 选择器 | 
描述 | 
返回值 | 
| #id | 
id选择器,根据id值匹配一个元素 | 
单个元素 | 
| .class | 
类选择器,根据类名匹配元素 | 
元素集合 | 
| element | 
元素选择器,根据元素名匹配所有元素 | 
元素集合 | 
| * | 
通配符选择器,匹配所有元素 | 
元素集合 | 
| selector1, selector2, …, selectorN | 
同时获取多个元素 | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
   | <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>基本选择器</title>     <script src="./js/jquery-1.12.4.js"></script>     <style>         div {             border: 1px solid black;         }     </style> </head> <body>     <div id="byId">第一个div元素,id值为byId</div>     <p>第一个p元素</p>     <p class="byClass">第二个p元素,类名为byClass</p>     <div class="byClass">第二个div元素,类名为byClass</div>     <script>                  $('#byId').css('background', 'pink');                    $('.byClass').css('background', 'red');                  $('p').css('font-size', '20px');                  $('*').css('background', 'yellow');         /*         虽然通配符可以匹配所有的元素,但是会影响网页渲染的时间,建议用逗号分隔开多个元素         $('.byClass, #byId').css('background', 'yellow');         */     </script> </body> </html>
   | 
 
层次选择器
| 选择器 | 
描述 | 
返回值 | 
| parent > child | 
子元素选择器,根据父元素匹配所有的子元素(紧邻的一代元素) | 
元素元素 | 
| selector selector1 | 
后代选择器,根据祖先元素(selector)匹配所有的后代元素(selector1)。【后代元素不仅包括子元素,还包括子元素下的所有其他元素】 | 
元素集合 | 
| prev + next | 
兄弟选择器,匹配prev元素紧邻的兄弟元素【后面第一个符合的元素,只找一个,包括* 】 | 
元素集合 | 
| prev ~ siblings | 
兄弟选择器,匹配prev元素后的所有兄弟元素 | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
   | <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>层次选择器</title>     <script src="./js/jquery-1.12.4.js"></script>     <style>              </style> </head> <body>     <p>这是div前面的p元素</p>     <div id="dv">         <p>这是div中的第一个p元素</p>         <ul>             <li>这是第一个li元素</li>             <li><p>这是第二个li中的p元素</p></li>         </ul>         <p>这是div中的第二个p元素</p>     </div>     <p>这是div后面的第1个p元素</p>     <p>这是div后面的第2个p元素</p>     <p>这是div后面的第3个p元素</p>
      <script>                  $('#dv > p').css('background', 'red');                  /*         $('#dv > p');           $('#dv').children('p');  
          另:         $('#dv > *');           */
                   $('#dv p').css('background', 'red');         /*         find()方法也可以获取指定元素的后代元素         $('#dv p');           $('#dv').find('p');           */
                   $('#dv + p').css('background', 'green');
                   $('#dv ~ p').css('background', 'yellow');
          /*         拓展:         next()可获取指定元素紧邻的下一个兄弟元素         $('div').next('p').css('background', 'green');
          nextAll()可获取指定元素后的所有兄弟元素         $('div').nextAll('p').css('background', 'green');
          siblings()可获取指定元素的所有兄弟元素(前后都要)         $('div').siblings('p').css('background', 'green');         */     </script> </body> </html>
   | 
 
过滤选择器
为了快速筛选DOM元素,jQuery提供了一些过滤选择器,过滤选择器通常以“:”开头,”:“后面用于指定过滤规则。
以下介绍7种过滤选择器
基本过滤选择器
| 选择器 | 
描述 | 
返回值 | 
| :first | 
获取第一个元素 | 
单个元素 | 
| :last | 
获取最后一个元素 | 
单个元素 | 
| :not(selector) | 
获取除给定选择器外的所有元素 | 
元素集合 | 
| :even | 
获取所有索引值为偶数的元素,索引号从0开始 | 
元素集合 | 
| :odd | 
获取所有索引值为奇数的元素,索引号从0开始 | 
元素集合 | 
| :eq(index) | 
指定元素索引值元素 | 
单个元素 | 
| :gt(index) | 
大于所给定值的元素 | 
元素集合 | 
| :lt(index) | 
小于给定值的元素 | 
元素集合 | 
| :header | 
获取所有标题类型的元素,如h1,h2,… | 
元素集合 | 
| :animated | 
获取正在执行动画效果的元素 | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
   | <body>     <ul style="width: 200px">         <li>第一行</li>         <li>第二行</li>         <li>第三行</li>         <li>第四行</li>     </ul>
      <script>                  $('li:even').css('background', 'pink');                  $('li:odd').css('background', 'red');                  $('li:eq(2), li:gt(2)').css('background', "green");     </script> </body>
   | 
 
可见性过滤选择器
在网页开发中,具有动态效果的页面往往有很多元素被隐藏。”:hidden”选择器可以获取css样式为”display: none”,以及属性” type=”hidden” “的文本隐藏域。
| 选择器 | 
描述 | 
返回值 | 
| :visible | 
获取所有可见元素 | 
元素集合 | 
| :hidden | 
获取所有不可见元素 | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   | <body>     <p id="dis">显示文本1</p>     <p id="vis">显示文本2</p>     <input type="hidden" value="隐藏文本"/>
      <script>                  $(':visible').css('background', 'yellow');         console.log($(':visible'));
                            $('#dis:visible').css('display', 'none');           $('#vis:visible').css('visibility', 'hidden');                    console.log('隐藏的p元素:');         console.log($('p:hidden'));         console.log('隐藏的input元素:');         console.log($('input:hidden'));     </script> </body>
   | 
 
内容过滤选择器
元素的内容是指它所包含的子元素或文本内容
| 选择器 | 
描述 | 
返回值 | 
| :contains(text) | 
获取包含给定文本的元素 | 
元素集合 | 
| :empty | 
获取所有不包含子元素或者文本的空元素 | 
元素集合 | 
| :has(selector) | 
获取含有选择器所匹配的元素 | 
元素集合 | 
| :parent | 
获取含有子元素或文本的元素 | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
   | <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>过滤选择器--内容过滤选择器</title>     <script src="./js/jquery-1.12.4.js"></script>     <style>         div {             width: 200px;             height: 30px;             margin: 5px;             border: 1px solid black;         }     </style> </head> <body>     <div>我是div元素的文本</div>     <div>我也是div元素的文本</div>     <div><span>我是div内span元素的文本</span></div>     <div></div>
      <script>                  $('div:contains("也")').css('background', 'pink');
                   $('div:has(span)').css('background', 'pink');
                   $('div:empty').css('background', 'pink');
                   $('div:parent').css('background', 'green');     </script> </body> </html>
   | 
 
属性过滤选择器
| 选择器 | 
描述 | 
返回值 | 
| [attribute] | 
获取包含给定属性的元素 | 
元素集合 | 
| [attribute=value] | 
获取等于给定的属性是某个特定值的元素 | 
元素集合 | 
| [attribute!=value] | 
获取不等于给定的属性是某个特定值的元素 | 
元素集合 | 
| [attribute^=value] | 
获取给定的属性是以某些值开始的元素 | 
元素集合 | 
| [attribute$=value] | 
获取给定的属性是以某些值结尾的元素 | 
元素集合 | 
| [attribute*=value] | 
获取给定的属性是以包含某些值的元素 | 
元素集合 | 
| [selector1][selector2][selectorN] | 
获取满足多个条件的复合属性的元素(并且关系) | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
   | <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <meta http-equiv="X-UA-Compatible" content="ie=edge">     <title>过滤选择器--属性过滤选择器</title>     <script src="./js/jquery-1.12.4.js"></script>     <style>         div {             width: 200px;             height: 50px;             border: 1px solid black;         }     </style> </head> <body>     <div class="dv">class=dv</div>     <div title="标题">title=标题</div>     <div class="dv1" title="标题1">class=dv1 title=标题1</div>     <div class="dv1" title="标题2">class=dv2 title=标题2</div>
      <script>                  $('[class^=d]').css('background', 'pink');
                   $('[class=dv1][title*=2]').css('background', 'green');     </script> </body> </html>
   | 
 
子元素过滤选择器
| 选择器 | 
描述 | 
返回值 | 
| :first-child | 
获取每个父元素下的第一个子元素 | 
元素集合 | 
| :last-child | 
获取每个父元素下的最后一个子元素 | 
元素集合 | 
| :only-child | 
获取每个仅有一个子元素的父元素下的子元素 | 
元素集合 | 
| :nth-child(eq、even、odd、index) | 
获取每个元素下的特定元素,索引号从1开始 | 
元素集合 | 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | <body>     <ul>         <li>北京</li>         <li>上海</li>     </ul>     <ul>         <li>广州</li>         <li>深圳</li>     </ul>     <ul>         <li>天津</li>     </ul>     <ul>         <li>重庆</li>     </ul>
      <script>                  $('li:only-child').css('background', 'pink');
                   $('li:nth-child(1)').css('background', 'green');     </script> </body>
   | 
 
表单过滤选择器
| 选择器 | 
描述 | 
返回值 | 
| :input | 
获取表单中所有input、textarea、select、button元素(表单控件) | 
元素集合 | 
| :text | 
获取表单中所有input[type=text]的元素(单行文本框) | 
元素集合 | 
| :password | 
获取表单中所有input[type=password]的元素(密码框) | 
元素集合 | 
| :radio | 
获取表单中所有input[type=radio]的元素(单选按钮) | 
元素集合 | 
| :checkbox | 
获取表单中所有input[type=checkbox]的元素(复选框) | 
元素集合 | 
| :submit | 
获取表单中所有input[type=submit]的元素(提交按钮) | 
元素集合 | 
| :image | 
获取表单中所有input[type=image]的元素(图像域) | 
元素集合 | 
| :reset | 
获取表单中所有input[type=reset]的元素(重置按钮) | 
元素集合 | 
| :button | 
获取表单中所有input[type=button]的元素(普通按钮) | 
元素集合 | 
| :file | 
获取表单中所有input[type=file]的元素(文件域) | 
元素集合 | 
注意:
①”:button”选择器的作用范围,包含使用input[type=button]和button元素定义的按钮
②”:image”选择器的作用范围,包含使用input[typeimage]定义的图像,但不包含img元素定义的图像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | <body>     <form id="myForm">         昵称:<input type="text" value="text"/><br/>         密码:<input type="password" value="password"/><br/>         性别:<input type="radio"><span>男</span><input type="radio"><span>女</span><br/>         爱好:<input type="checkbox"><span>游泳</span><input type="checkbox"><span>旅游</span><br/>         照片1:<img src="./img/pro_down.png" width="100"><br/>         照片2:<input type="image" src="./img/pro_down.png" width="150"><br/>         说明:<textarea></textarea><br/>         <input type="reset" value="重置"/>         <button>清空</button>         <input type="button" value="保存"/>         <input type="submit" value="提交"/>     </form>
      <script>                  
                   $('#myForm :image').hide();                </script> </body>
   | 
 
表单对象属性过滤选择器
| 选择器 | 
描述 | 
返回值 | 
| :enabled | 
获取表单中所有属性为可用的元素 | 
元素集合 | 
| :disabled | 
获取表单中所有属性为不可用的元素 | 
元素集合 | 
| :checked | 
获取表单中所有被选中的元素 | 
元素集合 | 
| :selected | 
获取表单中所有被选中的option的元素 | 
元素集合 | 
1
   | $('input:checked').hide();  //隐藏选中的元素
  |