选择器是jQuery最基础的东西,本文中列举的选择器基本上囊括了所有的jQuery选择器,也许各位通过这篇文章能够加深对jQuery选择器的理解,它们本身用法就非常简单,我更希望的是它能够提升个人编写jQuery代码的效率。本文配合截图、代码和简单的概括对所有jQuery选择器进行了介绍,也列举出了一些需要注意和区分的地方。
一、基本选择器
1. id选择器(指定id元素)
将id=”one”的元素背景色设置为黑色。(id选择器返单个元素)
1 2 3 4 5
| $(document).ready( function() { $("#one").css("background", "#000"); } );
|
2. class选择器(遍历css类元素)
将class=”cube”的元素背景色设为黑色
1 2 3 4 5
| $(document).ready( function() { $(".cube").css("background", "#000"); } );
|
3. element选择器(遍历html元素)
将p元素的文字大小设置为12px
1 2 3 4 5
| $(document).ready( function() { $("p").css("font-size", "12px"); } );
|
4. * 选择器(遍历所有元素)
1 2 3 4 5
| $(document).ready( function() { $("form *").css("color", "#FF0000"); } );
|
5. 并列选择器
1 2 3 4 5
| $(document).ready( function() { $("p, div").css("margin", "0"); } );
|
二、层次选择器
1. parent > child(直系子元素)
1 2 3 4 5
| $(document).ready( function() { $("div> span").css("color", "#FF0000"); } );
|
下面的代码,只有第一个span会变色,第二个span不属于div的一代子元素,颜色保持不变。
1 2 3 4 5 6
| <div> <span>123</span> <p> <span>456</span> </p> </div>
|
2. prev + next(下一个兄弟元素,等同于next()方法)
1 2 3 4 5
| $(document).ready( function() { $(".item + div").css("color", "#FF0000"); } );
|
下面的代码,只有123和789会变色
1 2 3 4 5 6 7
| <p class = "item"> </p> <div>123</div> <div>456</div> <span class = "item"> </span> <div>789</div>
|
3. prev ~ siblings(prev元素的所有兄弟元素,等同于nextAll()方法)
1 2 3 4 5
| $(document).ready( function() { $(".inside ~ div").css("color", "#FF0000"); } );
|
下面的代码,G2和G4会变色
1 2 3 4
| <div class = "inside">G1</div> <div>G2</div> <span>G3</span> <div>G4</div>
|
三、过滤选择器
1. 基本过滤选择器
——1.1 :first和:last(取第一个元素或最后一个元素)
1 2 3 4 5 6
| $(document).ready( function() { $("span:first").css("color", "#FF0000"); $("span:last").css("color", "#FF0000"); } );
|
下面的代码,G1(first元素)和G3(last元素)会变色
1 2 3 4 5 6 7 8 9
| <span> G1 </span> <span> G2 </span> <span> G3 </span>
|
——1.2 :not(取非元素)
1 2 3 4 5
| $(document).ready( function() { $("div:not(.wrap)").css("color", "#FF0000"); } );
|
下面的代码,G1会变色
1 2
| <div>G1</div> <div class = "wrap">G2</div>
|
但是,请注意下面的代码:
1 2 3 4
| <div> G1 <div class = "wrap">G2</div> </div>
|
当G1所在div和G2所在div是父子关系时,G1和G2都会变色。
——1.3 :even和:odd(取偶数索引或奇数索引元素,索引从0开始,even表示偶数,odd表示奇数)
1 2 3 4 5 6
| $(document).ready( function() { $("tr:even").css("background", "#EEE"); $("tr:odd").css("background", "#DADADA"); } );
|
A、C行颜色#EEE(第一行的索引为0),B、D行颜色#DADADA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <table width = "200" cellpadding = "0" cellspacing = "0"> <tbody> <tr> <td>A</td> </tr> <tr> <td>B</td> </tr> <tr> <td>C</td> </tr> <tr> <td>D</td> </tr> </tbody> </table>
|
——1.4 :eq(x) (取指定索引的元素)
1 2 3 4 5
| $(document).ready( function() { $("tr:eq(2)").css("background", "#FF0000"); } );
|
更改第三行的背景色,在上面的代码中C的背景会变色。
——1.5 :gt(x)和:lt(x)(取大于x索引或小于x索引的元素)
1 2 3 4 5 6
| $(document).ready( function() { $("ul li:gt(2)").css("color", "#FF0000"); $("ul li:lt(2)").css("color", "#0000FF"); } );
|
L4和L5会是红色,L1和L2会是蓝色,L3是默认颜色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <ul> <li> L1 </li> <li> L2 </li> <li> L3 </li> <li> L4 </li> <li> L5 </li> </ul>
|
——1.6 :header(取H1~H6标题元素)
1 2 3 4 5
| $(document).ready( function() { $(":header").css("background", "#EFEFEF"); } );
|
下面的代码,H1~H6的背景色都会变
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <h1> H1 </h1> <h2> H2 </h2> <h3> H3 </h3> <h4> H4 </h4> <h5> H5 </h5> <h6> H6 </h6>
|
2. 内容过滤选择器
——2.1 :contains(text)(取包含text文本的元素)
1 2 3 4 5
| $(document).ready( function() { $('dd:contains("jQuery")').css("color", "#FF0000"); } );
|
下面的代码,第一个dd会变色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <dl> <dt> 技术 </dt> <dd> jQuery, .NET, CLR </dd> <dt> SEO </dt> <dd> 关键字排名 </dd> <dt> 其他 </dt> <dd> </dd> </dl>
|
——2.2 :empty(取不包含子元素或文本为空的元素)
1 2 3 4 5
| $(document).ready( function() { $("dd:empty").html("没有内容"); } );
|
上面第三个dd会显示”没有内容”文本
——2.3 :has(selector)(取选择器匹配的元素)
1 2 3 4 5
| $(document).ready( function() { $("div:has(span)").css("border", "1px solid #000"); } );
|
即使span不是div的直系子元素,也会生效
1 2 3 4 5 6
| <div> <h2> A <span>B</span> </h2> </div>
|
——2.4 :parent(取包含子元素或文本的元素)
1 2 3 4 5
| $(document).ready( function() { $("ol li:parent").css("border", "1px solid #000"); } );
|
下面的代码,A和D所在的li会有边框
1 2 3 4 5 6 7 8 9 10 11 12
| <ol> <li> </li> <li> A </li> <li> </li> <li> D </li> </ol>
|
3. 可见性过滤选择器
——3.1 :hidden(取不可见的元素)
jQuery至1.3.2之后的:hidden选择器仅匹配display:none或的元素,而不匹配visibility: hidden或opacity:0的元素。这也意味着hidden只匹配那些“隐藏的”并且不占空间的元素,像visibility:hidden或opactity:0的元素占据了空间,会被排除在外。
参照:http://www.jquerysdk.com/api/hidden-selector
下面的代码,先弹出”hello”对话框,然后hid-1会显示,hid-2仍然是不可见的。
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
| <html xmlns ="http://www.w3.org/1999/xhtml"> <head runat ="server"> <title> </title> <style type ="text/css"> div { margin : 10px; width : 200px; height : 40px; border : 1px solid #FF0000; display :block; } .hid-1 { display : none; } .hid-2 { visibility : hidden; } </style> <script type ="text/javascript" src ="js/jquery.min.js"> </script> <script type ="text/javascript"> $(document).ready( function() { $("div:hidden").show(500); alert($("input:hidden").val()); } ); </script> </head> <body> <div class ="hid-1">display: none</div> <div class ="hid-2">visibility: hidden</div> <input type ="hidden" value ="hello"/> </body> </html>
|
——3.2 :visible(取可见的元素)
下面的代码,最后一个div会有背景色
1 2 3 4 5 6 7 8 9 10 11
| <script type ="text/javascript"> $(document).ready( function() { $("div:visible").css("background", "#EEADBB"); } ); </script> <div class ="hid-1">display: none</div> <div class ="hid-2">visibility: hidden</div> <input type ="hidden" value ="hello"/> <div>jQuery选择器大全</div>
|
4. 属性过滤选择器
——4.1 [attribute](取拥有attribute属性的元素)
下面的代码,最后一个a标签没有title属性,所以它仍然会带下划线
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
| <script type ="text/javascript"> $(document).ready( function() { $("a[title]").css("text-decoration", "none"); } ); </script> <ul> <li> <a href ="#" title ="DOM对象和jQuery对象" class ="item"> DOM对象和jQuery对象 </a> </li> <li> <a href ="#" title ="jQuery选择器大全" class ="item-selected"> jQuery选择器大全 </a> </li> <li> <a href ="#" title ="jQuery事件大全" class ="item"> jQuery事件大全 </a> </li> <li> <a href ="#" title ="基于jQuery的插件开发" class ="item"> 基于jQuery的插件开发 </a> </li> <li> <a href ="#" title ="Wordpress & jQuery" class ="item"> Wordpress & jQuery </a> </li> <li> <a href ="#" class ="item"> 其他 </a> </li> </ul>
|
——4.2 [attribute = value]和[attribute != value](取attribute属性值等于value或不等于value的元素)
分别为class=”item”和class!=item的a标签指定文字颜色
可根据属性值是否匹配,分别为不同元素设置文字颜色或其他样式。
本文早期发布于个人 CSDN 博客:查看原文