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 相关文章推荐
关于jQuery中的end()使用方法
Jul 10 Javascript
基于jQuery中对数组进行操作的方法
Apr 16 Javascript
jQuery实现跨域
Feb 03 Javascript
JS验证IP,子网掩码,网关和MAC的方法
Jul 02 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 Javascript
BootStrap的Datepicker控件使用心得分享
May 25 Javascript
jQuery获取table下某一行某一列的值实现代码
Apr 07 jQuery
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
微信小程序获取用户openid的实现
Dec 24 Javascript
微信小程序实现收货地址左滑删除
Nov 18 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 Javascript
Ant Design的可编辑Tree的实现操作
Oct 31 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与javascript对多项选择的处理
2006/10/09 PHP
PHP脚本中include文件出错解决方法
2008/11/20 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
理解AngularJs指令
2015/12/10 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
JsonProperty 的使用方法详解
2019/10/11 Javascript
python搭建虚拟环境的步骤详解
2016/09/27 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
期末考试动员演讲稿
2014/01/10 职场文书
集体婚礼证婚词
2014/01/13 职场文书
毕业生面试求职信
2014/06/23 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android