jQuery选择器的强大不仅在于选择器支持基本的css选择符,还支持很多CSS的伪类选择符,甚至可以自定义选择符,下面让我们来看看一些伪类选择符

:nth-child的用法

nth-child是一个css3伪类选择符,在jQuery中被实现了,在Jquery API中对nth-child的定义是:”匹配其父元素下的第N个子或奇偶元素“。读着感觉有点绕口,下面让我们通过例子来说明:

    <div><ul><li>one</li><li>two</li><li>three</li><li>four</li><li>five</li><li>six</li><li>seven</li><li>eight</li><li>nine</li></ul><ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul></div><script type="text/javascript">$("li:nth-child(2)").css("background-color", "blue");</script>

运行效果如下:

API定义中的匹配其父辈指的是所选元素的父元素不同,则分开选择。在上面例子中虽然一共选择18个<li>但是这18<li>分属于2个不同的<ul>,所以会选择两个.如果将其放入同一个<ul>中,如果放入同一个<ul>执行上面代码,则:

理解了上面匹配父辈元素,下面来说说这个选择符参数的用法.

  1. 向上面那样直接给出选择的位置,但是这里注意,这个位置是以1为开始的,而不是0
  2. n个倍数选择法,比如可以使3n+1,-3n+1,4n,等,匹配所有页面上存在的n的倍数

例子:

    <div><ul><li>one</li><li>two</li><li>three</li><li>four</li><li>five</li><li>six</li><li>seven</li><li>eight</li><li>nine</li></ul></div><script type="text/javascript">$("li:nth-child(3n-1)").css("background-color", "blue");</script>

效果:

可见相对应的元素都被匹配

3.还有一种用法是我们熟知的odd和even,就是奇数和偶数,如下:

    <script type="text/javascript">$("li:nth-child(odd)").css("background-color", "blue");</script>

效果:

:first-child&last-child

从上面的nth-child可以看到”匹配父类下的“含义,first-child和last-child也同样是这样.它们可以看做nth-child的封装:

first-child和nth-child(1)等价,这里就不多说了.

而first-child目前我还找不到等价的nth-child表达式,匹配父类下的最后一个子元素:

    <ul><li>1</li><li>2</li></ul><ul><li>1</li><li>2</li></ul><script type="text/javascript">$("li:last-child").css("background-color", "blue");</script>

效果:

:input并不只是匹配input

个选择符我想大家都比较熟悉,但是要注意,input伪类选择符不只是匹配<input>标签,还会匹配<select>和<textarea>:

第一个:<input type="input" />
第二个:<select id="select"></select>
第三个:<textarea></textarea>
<script type="text/javascript">alert($(":input").length);//alert 3
</script>

可以看到,不光<input>被选择,<select>和<textarea>也被选择了

伪类选择符可以嵌套

通常情况下,我们可以通过嵌套伪类选择符来达到我们需要的效果,伪类选择符,如下:

    <ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li></ul><script type="text/javascript">$("li:not(:first):not(:last)").css("background-color", "blue");</script>

效果:

可见,除了第一个和最后一个li,其它都被选择.当然,嵌套是有层数限制的,具体的次数我就不太清了(各位高手记得麻烦告诉我下),反正够你进行不是变态的使用:-)

自定义伪类选择符

jquery还提供给我们扩展原有选择符的方式,可以让我们根据自己的需要自定义选择符,下面通过一个有实际意义的例子看如何做到:

在我们使用jquery的serialize方法将当前表单中的元素提交到服务器时,总是会选上asp.net的ViewState(<input type=”hidden” />)这无疑浪费了好多资源,我们通过一个扩展的伪类选择符看如何不选择它:

<form name="form1" method="post" action="default.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGRWxo4mg/noF3+7k/L7nyw13HVnLQ==" />
</div><script type="text/javascript">$.expr[":"].noViewState = function(element) {return !$(element).attr("id") === "_VIEWSTATE";}alert($(":input:noViewState").size());//alert 0 ViewState has not been choosen</script></form>

通过$.expr的方式对伪类选择符进行扩展,可以看出,上面的选择符使用:noViewState后,viewState没有被选择.

小结:

jQuery的伪类选择符是很强大的一项功能,它内置了很多种方便我们选择的选择符,我们可以嵌套甚至扩展这些伪类选择符.这让我们的js编程更加愉悦了许多.

By CareySon

转载于:https://www.cnblogs.com/CareySon/archive/2010/01/03/1638439.html

jQuery Tips(5)----关于伪类选择符相关推荐

  1. 【00】伪类选择符-魔芋的理解

    [00]魔芋的理解 nth-child(n)这样的带n的,n从1开始. n可以是表达式:n*3,n+3 可以是特殊字符串"odd","even" [02]emp ...

  2. Css伪类选择器之常见形式、动态伪类篇

    伪类选择器 伪选择器包括伪类和伪对象选择器,伪选择器以冒号(:)作为前缀标识符.冒号前可以添加选择器,限定伪类应用的范围,冒号后为伪类和伪对象名,冒号前后没有空格,否则将错认为类选择器: 单纯式,E: ...

  3. [你必须知道的css系列]第一回:丰富的利器:CSS选择符之通配符、类选择符、包含选择符、ID选择符...

    一般没有系统的学习过,只是在网上看一些片断教程的人.见到最多的可能也就是: 元素选择符(例如:body .a .li ) ID选择符(例如:#head.#body.#foot) 类选择符(例如:.re ...

  4. CSS伪对象选择符整理

    1.E::selection 2.E::placeholder 1. E::selection 设置对象被选择时的样式. 需要注意的是,::selection只能定义被选择时的background-c ...

  5. 伪类选择器之hover

    1.表示鼠标移入时候发生的状态改变(选择器:hover{}) 2.使用: (1)改变自己------当前自己的选择器:hover{} (2)通过父级改变子级------父级选择器:hover 子级选择 ...

  6. html:(29):伪选择符和分组选择符

    伪类选择符 更有趣的是伪类选择符,为什么叫做伪类选择符,它允许给html不存在的标签(标签的某种状态)设置样式,比如说我们给html中一个标签元素的鼠标滑过的状态来设置字体颜色: a:hover{co ...

  7. CSS快速学习2:选择符权重和字体类属性

    选择符的权重: CSS中用四位数字表示权重. 类型选择符的权重为0001 class选择符的权重为0010 id选择符的权重为0100 子选择符的权重为0000 属性选择符的权重为0010 伪类选择符 ...

  8. jq 点击导航添加背景_jq入门(2)css选择符

    今天继续分享jq入门基础. css选择符 jQuery支持CSS规范1到规范3中的几乎所有选择符,具体内容可以参考W3C网站.这种对CSS选择符的支持,使得开发者在增强自己的网站时,不必为哪种浏览器不 ...

  9. 30个你必须记住的CSS选择符

    所以你学会了基础的id,类和后代选择符,然后你就一直用它们了吗?如果是这样,你丢失了(css的)巨大的灵活性.在本文中提到的很多选择器属于CSS3规范的一部分,因此,只有在现代浏览器中才可使用. 1. ...

最新文章

  1. 【转载】Linux系统与性能监控
  2. 机器学习中的欠拟合与过拟合
  3. .net项目文档生成工具使用
  4. 筱玛爱游戏——线性基
  5. Java输入n个无序的整数,请编写程序,找出其中最大数所在的位置.请以以下三种情况运行你的程序.以便验证你的程序是否正确.(不得少于5个数)① 最大数在最前 ② 最大数在最后 ③ 最大
  6. tomcat加上了https后访问不了_西部数码使用指南:部署https后访问提示存在安全隐患的排查解决方法...
  7. buntu下shell脚本运行异常:bash和…
  8. 琴生不等式一般形式_[学习笔记]常用不等式
  9. 数据库errno: 1045的解决办法
  10. 巨杉数据库入选Gartner数据库报告,中国首家入选厂商
  11. python 控制 窗口 控件_【python】Tkinter可视化窗口(一)
  12. Bert源代码(二)模型
  13. mysql explain结果信息_MySQL EXPLAIN 输出信息解读
  14. Bootstrap4表单验证(纯JavaScript方法)
  15. 服务器网站权限,在服务器上设置网站权限
  16. 我不接私活了,抱歉!
  17. 以太坊是什么?为什么说它是区块链2.0的代表
  18. 在使用计算机时可以用什么键关机,电脑死机按什么键关机重启
  19. SQL Server 数据库文件类型
  20. el-input-number 默认值设置失效

热门文章

  1. bat脚本更新本地Git仓库
  2. Android开发笔记(八十五)手机数据库Realm
  3. oracle备份出现问题,TSM + Oracle备份出现问题
  4. mysql 大表 驱动_MySql 小表驱动大表
  5. mouseover和mouseout多次触发解决方法(兼容ie和firefox)(转)
  6. VBS操作注册表设置新建读取,删除等操作(更新中)
  7. L255 Learning to say no brings a thrill of freedom
  8. 年前计划之jquery API 重读
  9. Centos防火墙添加IP白名单
  10. LAMP的部署(一)