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 相关文章推荐
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
jQuery LigerUI 使用教程入门篇
Jan 18 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
JavaScript学习笔记之取数组中最大值和最小值
Mar 23 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
javascript trie前缀树的示例
Jan 29 Javascript
通过cordova将vue项目打包为webapp的方法
Feb 02 Javascript
jQuery - AJAX load() 实例用法详解
Aug 27 jQuery
详解Vue的mixin策略
Nov 19 Vue.js
关于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
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
jquery采用oop模式class类的使用示例
2016/01/22 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
python的常见矩阵运算(小结)
2019/08/07 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
解决python 上传图片限制格式问题
2019/10/30 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
行政总监岗位职责
2013/12/05 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
中秋晚会策划方案
2014/06/12 职场文书
离职证明标准格式
2014/09/15 职场文书
逃课检讨书范文
2015/05/06 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
JS高级程序设计之class继承重点详解
2022/07/07 Javascript