jQuery 关于伪类选择符的使用说明


Posted in Javascript onApril 24, 2013

   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>

运行效果如下:

  jQuery 关于伪类选择符的使用说明    

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

jQuery 关于伪类选择符的使用说明

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

    向上面那样直接给出选择的位置,但是这里注意,这个位置是以1为开始的,而不是0 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>

效果:

jQuery 关于伪类选择符的使用说明

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

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

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

效果:

jQuery 关于伪类选择符的使用说明

 

:first-child&last-child

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

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

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

jQuery 关于伪类选择符的使用说明

: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>

效果:

   jQuery 关于伪类选择符的使用说明

   可见,除了第一个和最后一个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编程更加愉悦了许多.

Javascript 相关文章推荐
许愿墙中用到的函数
Oct 07 Javascript
javascript 在网页中的运用(asp.net)
Nov 23 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
仿新浪微博返回顶部的jquery实现代码
Oct 01 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
May 16 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
详解vue2 $watch要注意的问题
Sep 08 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
May 04 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 #Javascript
Jquery实现三层遍历删除功能代码
Apr 23 #Javascript
jQuery获取浏览器中的分辨率实现代码
Apr 23 #Javascript
使用PHP+JQuery+Ajax分页的实现
Apr 23 #Javascript
jQuery写的日历(包括日历的样式及功能)
Apr 23 #Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
Apr 23 #Javascript
js事件冒泡实例分享(已测试)
Apr 23 #Javascript
You might like
php之CodeIgniter学习笔记
2013/06/17 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
文本域光标操作的jQuery扩展分享
2014/03/10 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
nodejs下打包模块archiver详解
2014/12/03 NodeJs
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
python中list常用操作实例详解
2015/06/03 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
应届大学生的推荐信
2013/11/20 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
小学教学工作总结2015
2015/05/13 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫