页面的任何操做都须要节点的支撑,开发者如何快速高效的找到指定的节点也是前端开发中的一个重点。jQuery提供了一系列的选择器帮助开发者达到这一目的,让开发者能够更少的处理复杂选择过程与性能优化,更多专一业务逻辑的编写。javascript
<!--more-->css
jQuery几乎支持主流的css1~css3选择器的写法,咱们从最简单的也是最经常使用的开始学起html
id选择器:一个用来查找的ID,即元素的id属性前端
$( "#id" )
id选择器也是基本的选择器,jQuery内部使用JavaScript函数document.getElementById()来处理ID的获取。原生语法的支持老是很是高效的,因此在操做DOM的获取上,若是能采用id的话尽然考虑用这个选择器java
值得注意:jquery
id是惟一的,每一个id值在一个页面中只能使用一次。若是多个元素分配了相同的id,将只匹配该id选择集合的第一个DOM元素。但这种行为不该该发生;有超过一个元素的页面使用相同的id是无效的css3
类选择器,顾名思义,经过class样式类名来获取节点git
描述:github
$( ".class" )
类选择器,相对id选择器来讲,效率相对会低一点,可是优点就是能够多选web
一样的jQuery在实现上,对于类选择器,若是浏览器支持,jQuery使用JavaScript的原生getElementsByClassName()函数来实现的
下边实现%E2%80%94%E6%A0%B7%E5%BC%8F%E7%AF%87/2.1jQuery%E9%80%89%E6%8B%A9%E5%99%A8%E4%B9%8Bid%E9%80%89%E6%8B%A9%E5%99%A8.html)一个原生getElementsByClassName()函数的实现代码与jQuery实现代码的比较
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> div { width: 100px; height: 90px; float: left; padding: 5px; margin: 5px; background-color: #EEEEEE; } </style> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <div id="aaron"> <p>id="aaron"</p> <p>选中</p> </div> <div id="imooc"> <p>id="imooc"</p> <p>jQuery选中</p> </div> <div id="imooc"> <p>id="imooc"</p> <p>jQuery未选中</p> </div> <script type="text/javascript"> //经过原生方法处理 var div = document.getElementById('aaron'); div.style.border = "3px solid blue"; </script> <script type="text/javascript"> //经过jQuery直接传入id //id的惟一,只选择到了第一个匹配的id为imooc的div节点 var imooc = $("#imooc"); $(".imooc").css("border", "3px solid red"); </script> </body> </html>
咱们不难发现:
jQuery除了选择上的简单,并且没有再次使用循环处理
不难想到$(".imooc").css()方法内部确定是带了一个隐式的循环处理,因此使用jQuery选择节点,不只仅只是选择上的简单,同时还增长不少关联的便利操做,后续咱们还会慢慢的学到其余的优点。
元素选择器:根据给定(html)标记名称选择全部的元素
描述:
$( "element" )
搜索指定元素标签名的全部节点,这个是一个合集的操做。一样的也有原生方法getElementsByTagName()函数支持
下边代码所示—样式篇/2.3jQuery选择器之元素选择器.html):
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> div { width: 100px; height: 90px; float: left; padding: 5px; margin: 5px; background-color: #EEEEEE; } </style> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <div class="aaron"> <p>class="aaron"</p> <p>选中</p> </div> <div class="aaron"> <p>class="aaron"</p> <p>选中</p> </div> <div class="imooc"> <p>class="imooc"</p> <p>jQuery选中</p> </div> <div class="imooc"> <p>class="imooc"</p> <p>jQuery选中</p> </div> <script type="text/javascript"> //经过原生方法处理 //获取到全部的节点标记名为div的元素 //给每个div加上蓝色的边框 var divs = document.getElementsByTagName('div'); for (var i = 0; i < divs.length; i++) { divs[i].style.border = "3px solid blue"; } </script> <script type="text/javascript"> //经过jQuery直接传入标签名p //标签是能够多个的,因此获得的一样也是一个合集 $("div").css("border", "3px solid red"); </script> </body> </html>
第一组:经过getElementsByTagName方法获得页面全部的<div>元素
var divs = document.getElementsByTagName('div');
divs是dom合集对象,经过循环给每个合集中的<div>元素赋予新的border样式
第二组:一样的效果,$("p")选取全部的<p>元素,经过css方法直接赋予样式
在CSS中,常常会在第一行写下这样一段样式
* {padding: 0; margin: 0;}
通配符*意味着给全部的元素设置默认的边距。jQuery中咱们也能够经过传递*选择器来选中文档页面中的元素
描述:
$( "*" )
抛开jQuery,若是要获取文档中全部的元素,经过document.getElementsByTagName()中传递"*"一样能够获取到
不难发现,id、class、tag均可以经过原生的方法获取到对应的节点,可是咱们还须要考虑一个兼容性的问题,我这里顺便说起一下,好比:
看到了吧,做为一名合格的前端不是那么简单的,就一个基本的选择器上面都须要作这么多兼容,幸亏有jQuery的出现,让咱们省了不少功夫,若是你们对jQuery的实现感兴趣,能够看我另外一个门课程 《jQuery源码解析》
源码以下:—样式篇/2.4jQuery选择器之全选择器(*选择器).html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> div { width: 100px; height: 90px; float: left; padding: 5px; margin: 5px; background-color: #EEEEEE; } </style> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <div class="aaron"> <p>class="aaron"</p> <p>选中</p> </div> <div class="aaron"> <p>class="aaron"</p> <p>选中</p> </div> <div class="imooc"> <p>class="imooc"</p> <p>jQuery选中</p> </div> <div class="imooc"> <p>class="imooc"</p> <p>jQuery选中</p> </div> <script type="text/javascript"> //获取页面中全部的元素 var elements1 = document.getElementsByTagName('*'); </script> <script type="text/javascript"> //获取页面中全部的元素 var elements2 = $("*") ; //原生与jQuery方法比较 //===表示数据和类型都相等 if(elements2.length === elements1.length){ elements2.css("border","1px solid red"); } </script> </body> </html>
文档中的全部的节点之间都是有这样或者那样的关系。咱们能够把节点之间的关系能够用传统的家族关系来描述,能够把文档树看成一个家谱,那么节点与节点直接就会存在父子,兄弟,祖孙的关系了。
选择器中的层级选择器就是用来处理这种关系
子元素 后代元素 兄弟元素 相邻元素
经过一个列表,对比层级选择器的区别
仔细观察层级选择器之间仍是有不少类似与不一样点
源码以下:—样式篇/2.5jQuery选择器之层级选择器.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="https://github.xiaodongxier.com/demo/慕课网/jQuery基础(一)—样式篇/2.5jQuery选择器之层级选择器/imooc.css" type="text/css"> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>子选择器与后代选择器</h2> <div class="left"> <div class="aaron"> <p>div下的第一个p元素</p> </div> <div class="aaron"> <p>div下的第一个p元素</p> </div> </div> <div class="right"> <div class="imooc"> <article> <p>div下的article下的p元素</p> </article> </div> <div class="imooc"> <article> <p>div下的article下的p元素</p> </article> </div> </div> <script type="text/javascript"> //子选择器 //$('div > p') 选择全部div元素里面的子元素P $("div p").css("border", "1px groove red"); </script> <script type="text/javascript"> //后代选择器 //$('div p') 选择全部div元素里面的p元素 $("div p").css("border", "1px groove blue"); </script> <h2>相邻兄弟选择器与通常兄弟选择器</h2> <div class="bottom"> <div>兄弟节点div, +~选择器不能向前选择</div> <span class="prev">选择器span元素</span> <div>span后第一个兄弟节点div</div> <div>兄弟节点div <div class="small">子元素div</div> </div> <span>兄弟节点span,不可选</span> <div>兄弟节点div</div> </div> <script type="text/javascript"> //相邻兄弟选择器 //选取prev后面的第一个的div兄弟节点 $(".prev + div").css("border", "3px groove blue"); </script> <script type="text/javascript"> //通常相邻选择器 //选取prev后面的全部的div兄弟节点 $(".prev ~ div").css("border", "3px groove blue"); </script> </body> </html>
解析:id是惟一的,每一个id值在一个页面中只能使用一次。若是多个元素分配了相同的id,将只匹配该id选择集合的第一个DOM元素
解析:选择给定样式类名的全部元素,Class能够同时支持多个元素 标记名称选择全部的元素,元素节点是能够重复多个的 查找文档中的每个元素
如下是一段HTML结构,经过jQuery的基本选择器,咱们有多少方法能够获取?
<div id="left" class="left"></div>
解析:$('.left') $('#left') $("div") $("*")
经过选择器方法,判断选择器名称
$( "parent > child" ) $("prev + next") $("ancestor descendant") $("prev ~ siblings")
解析:
$( "parent > child" )
子选择器:选择全部指定“parent”元素中指定的"child"的直接子元素。$("ancestor descendant")
后代选择器:选择给定的祖先元素的全部后代元素, 一个元素的后代多是该元素的一个孩子,孙子,曾孙等$("prev + next")
相邻兄弟选择器:选择全部紧接在“prev”元素后的“next”元素$("prev ~ siblings")
通常兄弟选择器:匹配“prev”元素以后的全部 兄弟元素。具备相同的父元素,并匹配过滤“siblings”选择器
解析:
$( "parent > child" ) 子选择器:选择全部指定“parent”元素中指定的"child"的直接子元素。$("ancestor descendant") 后代选择器:选择给定的祖先元素的全部后代元素, 一个元素的后代多是该元素的一个孩子,孙子,曾孙等
$("prev + next") 相邻兄弟选择器:选择全部紧接在“prev”元素后的“next”元素
$("prev ~ siblings") 通常兄弟选择器:匹配“prev”元素以后的全部 兄弟元素。具备相同的父元素,并匹配过滤“siblings”选择器
不少时候咱们不能直接经过基本选择器与层级选择器找到咱们想要的元素,为此jQuery提供了一系列的筛选选择器用来更快捷的找到所需的DOM元素。筛选选择器不少都不是CSS的规范,而是jQuery本身为了开发者的便利延展出来的选择器
筛选选择器的用法与CSS中的伪元素类似,选择器用冒号“:”开头,经过一个列表,看看基本筛选器的描述:
注意事项:
源码以下:—样式篇/2.7jQuery选择器之基本筛选选择器.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="2.7jQuery选择器之基本筛选选择器/imooc.css" type="text/css"> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>基本筛选器</h2> <h3>:first/:last/:even/:odd</h3> <div class="left"> <div class="div"> <p>div:first</p> <p>:even</p> </div> <div class="div"> <p>:odd</p> </div> <div class="div"> <p>:even</p> </div> <div class="div"> <p>:odd</p> </div> <div class="div"> <p>:even</p> </div> <div class="div"> <p>div:last</p> <p>:odd</p> </div> </div> <script type="text/javascript"> //找到第一个div $(".left div:first").css("color", "#CD00CD"); </script> <script type="text/javascript"> //找到最后一个div $(".left div:last").css("color", "#CD00CD"); </script> <script type="text/javascript"> //:even 选择所引值为偶数的元素,从 0 开始计数 $(".left div:even").css("border", "3px groove red"); </script> <script type="text/javascript"> //:odd 选择所引值为奇数的元素,从 0 开始计数 $(".left div:odd").css("border", "3px groove blue"); </script> <br><br><br> <h3>:eq/:gt/:lt</h3> <div class="left center"> <div class="aaron"> <p>:lt(3)</p> </div> <div class="aaron"> <p>:lt(3)</p> </div> <div class="aaron"> <p>:eq(2)</p> </div> <div class="aaron"> </div> <div class="aaron"> <p>:gt(3)</p> </div> <div class="aaron"> <p>:gt(3)</p> </div> </div> <script type="text/javascript"> //:eq //选择单个 $(".center div:eq(1)").css("border", "3px groove blue"); </script> <script type="text/javascript"> //:gt 选择匹配集合中全部索引值大于给定index参数的元素 $(".center div:gt(3)").css("border", "3px groove blue"); </script> <script type="text/javascript"> //:lt 选择匹配集合中全部索引值小于给定index参数的元素 //与:gt相反 $(".center div:lt(2)").css("background", "#CD00CD"); </script> <h3>:not</h3> <div class="left right"> <div> <input type="checkbox" name="a" /> <p>Aaron</p> </div> <div> <input type="checkbox" name="b" /> <p>慕课</p> </div> <div> <input type="checkbox" name="c" checked="checked" /> <p>其余</p> </div> </div> <script type="text/javascript"> //:not 选择全部元素去除不匹配给定的选择器的元素 //选中全部紧接着没有checked属性的input元素后的p元素,赋予颜色 $(".right input:not(:checked) + p").css("background-color", "#CD00CD"); // $("input:not(:checked) + p").css("background-color", "#CD00CD"); $(":header").css("background-color", "#CD00CD"); </script> </body> </html>
基本筛选选择器针对的都是元素DOM节点,若是咱们要经过内容来过滤,jQuery也提供了一组内容筛选选择器,固然其规则也会体如今它所包含的子元素或者文本内容上
内容过滤器描述以下表:
注意事项:
源码以下:—样式篇/2.8jQuery选择器以内容筛选选择器.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="2.8jQuery选择器以内容筛选选择器/imooc.css" type="text/css"> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>内容筛选器</h2> <h3>:contains/:has</h3> <div class="left"> <div class="div"> <p>:contains</p> </div> <div class="div"> <p>:contains</p> </div> <div class="div"> <p> <span>:has</span> </p> </div> <div class="div"> <p>:contains</p> </div> </div> <script type="text/javascript"> //查找全部class='div'中DOM元素中包含"contains"的元素节点 //而且设置颜色 $(".left div:contains(contains)").css("color", "#CD00CD"); </script> <script type="text/javascript"> //查找全部class='div'中DOM元素中包含"span"的元素节点 //而且设置颜色 $(".left .div:has(span)").css("color", "blue"); </script> <h3>:parent/:empty</h3> <div class="left"> <div class="aaron"> <a>:parent</a> </div> <div class="aaron"> <a>:parent</a> </div> <div class="aaron"> <a>:parent</a> </div> <div class="aaron"> <a></a> </div> </div> <script type="text/javascript"> //选择全部包含子元素或者文本的a元素 //增长一个蓝色的边框 $("a:parent").css("border", "3px groove blue"); </script> <script type="text/javascript"> //找到a元素下面的全部空节点(没有子元素) //增长一段文本与边框 $("a:empty").text(":empty").css("border", "3px groove red"); </script> </body> </html>
举例 2—样式篇/2.8jQuery选择器以内容筛选选择器1.html)
元素有显示状态与隐藏状态,jQuery根据元素的状态扩展了可见性筛选选择器:visible与:hidden
描述以下:
这2个选择器都是 jQuery 延伸出来的,看起来比较简单,可是元素可见性依赖于适用的样式
:hidden选择器,不只仅包含样式是display="none"的元素,还包括隐藏表单、visibility等等
咱们有几种方式能够隐藏一个元素:
**_若是元素中占据文档中必定的空间,元素被认为是可见的。
可见元素的宽度或高度,是大于零。
元素的visibility: hidden 或 opacity: 0被认为是可见的,由于他们仍然占用空间布局。_**
不在文档中的元素是被认为是不可见的,若是当他们被插入到文档中,jQuery没有办法知道他们是不是可见的,由于元素可见性依赖于适用的样式
<p class="codepen" data-height="500" data-theme-id="dark" data-default-tab="html,result" data-user="xiaodongxier" data-slug-hash="WNbMbWa" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="jQuery选择器之可见性筛选选择器">
<span>See the Pen
jQuery选择器之可见性筛选选择器 by 小东西儿 (@xiaodongxier)
on CodePen.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
源码以下:—样式篇/2.9jQuery选择器之可见性筛选选择器.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="2.9jQuery选择器之可见性筛选选择器/imooc.css" type="text/css"> <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>可见性筛选选择器</h2> <h3>:visible/:hidden</h3> <div class="left"> <div class="div"> <a>display</a> <p id="div1" style="display:none;">display</p> </div> <div class="div"> <a>width</a> <a>height</a> <p id="div2" style="width:0;height:0">width/height</p> </div> <div class="div"> <a>visibility</a> <a>opacity</a> <p id="div3" style="visibility:hidden;opacity:0">visibility</p> </div> </div> <p id="show"></p> <script type="text/javascript"> function show (ele) { // instanceof运算符用来判断一个构造函数的prototype属性所指向的对象是否存在另一个要检测对象的原型链上 if (ele instanceof jQuery) { $("#show").html('元素的长度的 = ' + ele.length) } else { alert(ele+' 不是jQuery对象') } } </script> <script type="text/javascript"> //查找id = div1的DOM元素,是否可见 show( $("#div1:visible") ); </script> <script type="text/javascript"> //查找id = div2的DOM元素,是否可见 show( $("#div2:visible") ); </script> <script type="text/javascript"> //查找id = div3的DOM元素,是否可见 show( $("#div3:visible") ); </script> <script type="text/javascript"> //查找id = div1的DOM元素,是否隐藏 show( $("#div1:hidden") ); </script> <script type="text/javascript"> //查找id = div2的DOM元素,是否隐藏 show( $("#div2:hidden") ); </script> <script type="text/javascript"> //查找id = div3的DOM元素,是否隐藏 show( $("#div3:hidden") ); </script> </body> </html>
属性选择器让你能够基于属性来定位一个元素。能够只指定该元素的某个属性,这样全部使用该属性而无论它的值,这个元素都将被定位,也能够更加明确并定位在这些属性上使用特定值的元素,这就是属性选择器展现它们的威力的地方。
描述以下:
浏览器支持:
CSS选择器不管CSS2.1版本仍是CSS3版本,IE7和IE8都支持,webkit、Gecko核心及Opera也都支持,只有IE6如下浏览器才不支持
在这么多属性选择器中[attr="value"]和[attr*="value"]是最实用的
[attr="value"]能帮咱们定位不一样类型的元素,特别是表单form元素的操做,好比说input[type="text"],input[type="checkbox"]等
[attr*="value"]能在网站中帮助咱们匹配不一样类型的文件
源码以下:—样式篇/2.10jQuery选择器之属性筛选选择器 .html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <link rel="stylesheet" href="jQuery选择器之属性筛选选择器/imooc.css" type="text/css"> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>属性筛选选择器</h2> <h3>[att=val]、[att]、[att|=val]、[att~=val]</h3> <div class="left" testattr="true" > <div class="div" testattr="true" name='p1'> <a>[att=val]</a> </div> <div class="div" testattr="true" p2> <a>[att]</a> </div> <div class="div" testattr="true" name="-"> <a>[att|=val]</a> </div> <div class="div" testattr="true" name="a b"> <a>[att~=val]</a> </div> </div> <script type="text/javascript"> //查找全部div中,属性name=p1的div元素 $("div[name=p1").css("border", "3px groove red"); </script> <script type="text/javascript"> //查找全部div中,有属性p2的div元素 $("div[p2]").css("border", "3px groove blue"); </script> <script type="text/javascript"> //查找全部div中,有属性name中的值只包含一个连字符“-”的div元素 $("div[name|=-]").css("border", "3px groove #00FF00"); </script> <script type="text/javascript"> //查找全部div中,有属性name中的值包含一个连字符“空”和“a”的div元素 $("div[name~='b']").css("border", "3px groove #668B8B"); </script> <h3>[att^=val]、[att*=val]、[att$=val]、[att!=val]</h3> <div class="left" testattr="true" > <div class="div" testattr="true" name='imooc-aaorn'> <a>[att^=val]</a> </div> <div class="div" testattr="true" name='aaorn-imooc'> <a>[att$=val]</a> </div> <div class="div" testattr="true" name="attr-test-selector"> <a>[att*=val]</a> </div> <div class="div" name="a b"> <a>[att!=val]</a> </div> </div> <script type="text/javascript"> //查找全部div中,属性name的值是用imooc开头的 $("div[name^=imooc]").css("border", "3px groove red"); </script> <script type="text/javascript"> //查找全部div中,属性name的值是用imooc结尾的 $("div[name$=imooc]").css("border", "3px groove blue"); </script> <script type="text/javascript"> //查找全部div中,有属性name中的值包含一个test字符串的div元素 $("div[name*=test]").css("border", "3px groove #00FF00"); </script> <script type="text/javascript"> //查找全部div中,有属性testattr中的值没有包含"true"的div $("div[testattr!=true]").css("border", "3px groove #668B8B"); </script> </body> </html>
<p class="codepen" data-height="500" data-theme-id="dark" data-default-tab="html,result" data-user="xiaodongxier" data-slug-hash="abzqdqo" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="jQuery选择器之属性筛选选择器 ">
<span>See the Pen
jQuery选择器之属性筛选选择器 by 小东西儿 (@xiaodongxier)
on CodePen.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
子元素筛选选择器不常使用,其筛选规则比起其它的选择器稍微要复杂点
子元素筛选选择器描述表:
注意事项:
源码以下:—样式篇/2.11jQuery选择器之子元素筛选选择器.html)
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>jQuery选择器之子元素筛选选择器</title> <link rel="stylesheet" href="2.11jQuery选择器之子元素筛选选择器/imooc.css" type="text/css"> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>子元素筛选选择器</h2> <h3>:first-child、:last-child、:only-child</h3> <div class="left first-div"> <div class="div"> <a>:first-child</a> <a>第二个元素</a> <a>:last-child</a> </div> <div class="div"> <a>:first-child</a> </div> <div class="div"> <a>:first-child</a> <a>第二个元素</a> <a>:last-child</a> </div> </div> <script type="text/javascript"> //查找class="first-div"下的第一个a元素 //针对全部父级下的第一个 $(".first-div a:first-child").css("color", "#CD00CD"); </script> <script type="text/javascript"> //查找class="first-div"下的最后一个a元素 //针对全部父级下的最后一个 //若是只有一个元素的话,last也是第一个元素 $(".first-div a:last-child").css("color", "red"); </script> <script type="text/javascript"> //查找class="first-div"下的只有一个子元素的a元素 $(".first-div a:only-child").css("color", "blue"); </script> <h3>:nth-child、:nth-last-child</h3> <div class="left last-div"> <div class="div"> <a>:first-child</a> <a>第二个元素</a> <a>第三个元素</a> <a>:last-child</a> </div> <div class="div"> <a>:first-child</a> <a>第二个元素</a> </div> <div class="div"> <a>:first-child</a> <a>第二个元素</a> <a>第三个元素</a> <a>:last-child</a> </div> </div> <script type="text/javascript"> //查找class="last-div"下的第二个a元素 $(".last-div a:nth-child(2)").css("color", "#CD00CD"); </script> <script type="text/javascript"> //查找class="last-div"下的倒数第二个a元素 $(".last-div a:nth-last-child(2)").css("color", "red"); </script> </body> </html>
<p class="codepen" data-height="500" data-theme-id="dark" data-default-tab="html,result" data-user="xiaodongxier" data-slug-hash="xxbYMRO" style="height: 500px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="jQuery选择器之子元素筛选选择器">
<span>See the Pen
jQuery选择器之子元素筛选选择器 by 小东西儿 (@xiaodongxier)
on CodePen.</span>
</p>
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
不管是提交仍是传递数据,表单元素在动态交互页面的做用是很是重要的。jQuery中专门加入了表单选择器,从而可以极其方便地获取到某个类型的表单元素
表单选择器的具体方法描述:
注意事项:
除了input筛选选择器,几乎每一个表单类别筛选器都对应一个input元素的type值。大部分表单类别筛选器可使用属性筛选器替换。好比 $(':password') == $('[type=password]')