第 3 章 jQuery 过滤性选择器

:first 过滤选择器

本章我们介绍过滤选择器,该类型的选择器是根据某过滤规则进行元素的匹配,书写时以":"号开头,通常用于查找集合元素中的某一位置的单个元素。

在 jQuery 中,如果想得到一组相同标签元素中的第 1 个元素该怎样做呢?

在下面的示例代码中你可能注意到我们会使用

 $("li:first")

注意:书写时以":"号开头。

运行结果:

使用li:first过滤选择器可以很方便地获取ul列表中的第一个li元素.

li:first过滤选择器的功能是获取第一个元素,常常与其它选择器一起使用,获取指定的一组元素中的第一个元素。

:eq(index) 过滤选择器

如果想从一组标签元素数组中,灵活选择任意的一个标签元素,我们可以使用

:eq(index)

其中参数 index 表示索引号(即:一个整数),它从 0 开始,如果 index 的值为 3,表示选择的是第 4 个元素。例如:

在浏览器中显示的效果:

从图中可以看出,通过调用$("li:eq(3)")过滤选择器代码,获取了第 4 个<li>元素,并使用 css() 方法设置了该元素在页面中显示的文字样式。

:contains(text) 过滤选择器

与上一节介绍的:eq(index)选择器按索引查找元素相比,有时候我们可能希望按照文本内容来查找一个或多个元素,那么使用:contains(text)选择器会更加方便, 它的功能是选择包含指定字符串的全部元素,它通常与其他元素结合使用,获取包含"text"字符串内容的全部元素对象。其中参数 text 表示页面中的文字。

例如:

在浏览器中显示的效果:

从图中可以看出,调用li:contains('土豪')代码,可以很方便地获取<li>中包含‘土豪’字符内容的全部元素,并且只要与选择的元素中或子元素中包含该字符内容,就可以被选中。

注意:li:contains('土豪')土豪为什么必须加单引号呢?因为它是一个字符串,而不是一个变量,所以不加单或双引号的话是会报错的。

:has(selector) 过滤选择器

除了在上一小节介绍的使用包含的字符串内容过滤元素之外,还可以使用包含的元素名称来过滤,:has(selector)过滤选择器的功能是获取选择器中包含指定元素名称的全部元素,其中 selector 参数就是包含的元素名称,是被包含元素。

例如:获取指定包含某个元素名的全部<li>元素,并改变它们显示文字的颜色,如下图所示:

在浏览器中显示的效果:

可以看出,通过使用$("li:has('p')")选择器代码,获取了包含<p>元素的全部<li>元素,并通过 css 方法改变了这些元素在页面中显示的文字样式。

:hidden 过滤选择器

:hidden过滤选择器的功能是获取全部不可见的元素,这些不可见的元素中包括 type 属性值为 hidden 的元素。

例如,调用:hidden选择器获取不可见的<p>元素,并将该元素的内容显示在<div>元素中,如下图所示:

在浏览器中显示的效果:

从图中可以看出,先调用$("p:hidden")代码获取隐藏的<p>元素,并调用该元素的 html() 方法获取该元素中的内容,最后将该内容显示在<div>元素中。

:visible 过滤选择器

与上一节的:hidden过滤选择器相反,:visible过滤选择器获取的是全部可见的元素,也就是说,只要不将元素的 display 属性值设置为"none",那么,都可以通过该选择器获取。

例如,使用:visible选择器获取可见的<p>元素,并将该元素的内容显示在<div>元素中,如下图所示:

在浏览器中显示的效果:

从图中可以看出,调用$("p:visible")选择器代码,获取那个可见的<p>元素,并调用 html() 方法获取该元素的内容,最后将该内容显示在<div>元素中。

[attribute=value] 属性选择器

属性作为 DOM 元素的一个重要特征,也可以用于选择器中,从本节开始将介绍通过元素属性获取元素的选择器,[attribute=value]属性选择器的功能是获取与属性名和属性值完全相同的全部元素,其中 [] 是专用于属性选择器的括号符,参数 attribute 表示属性名称,value 参数表示属性值。

例如,使用[attribute=value]属性选择器,获取指定属性名和对应值的全部<li>元素,并设置它们显示的文字颜色,如图所示:

在浏览器中显示的效果:

从图中可以看出,使用$("li[title='我最爱']")属性选择器代码,获取了 2 个<li>元素,并调用 css() 方法设置它们在页面中显示的文字颜色,另外,属性值中的‘’单引号可以不写,由于属性名与属性值是等号,因此,它们之间不是包含关系,而是完全相同。

[attribute!=value] 属性选择器

与上一节介绍的[attribute=value]属性选择器正好相反,[attribute=value]属性选择器的功能是获取不包含属性名或者与属性名和属性值不相同的全部元素,其中 [] 是专用于属性选择器的括号符,参数 attribute 表示属性名称,value 参数表示属性值。

例如,使用[attribute!=value]属性选择器,获取指定不包含属性名,或与属性名和对应值不同的全部<li>元素,并设置它们显示的文字颜色,如图所示:

在浏览器中显示的效果:

可以看出,使用$("li[title!='我最爱']")属性选择器代码,获取了 3 个<li>元素,其中一个是不包含 title 属性名,另外两个的 title 属性值不等于"我最爱",获取元素后并调用 css() 方法设置这些元素在页面中显示的文字颜色。

[attribute*=value] 属性选择器

介绍一个功能更为强大的属性选择器[attribute*=value]它可以获取属性值中包含指定内容的全部元素,其中 [] 是专用于属性选择器的括号符,参数 attribute 表示属性名称,value 参数表示对应的属性值。

例如,使用[attribute*=value]属性选择器,获取属性值中包含某一指定内容的全部<li>元素,并设置它们显示的文字颜色,如下图所示:

在浏览器中显示的效果:

从图中可以看出,使用$("li[title*='最']")属性选择器代码,获取了 3 个<li>元素,这些元素的 title 属性值中都包含了"最"字符,获取这些元素后并调用 css() 方法设置这些元素在页面中显示的文字颜色。

:first-child 子元素过滤选择器

通过上面章节的学习,我们知道使用:first过滤选择器可以获取指定父元素中的首个子元素,但该选择器返回的只有一个元素,并不是一个集合,而使用:first-child子元素过滤选择器则可以获取每个父元素中返回的首个子元素,它是一个集合,常用多个集合数据的选择处理

如下图,如果想把页面中每个 ul 中的第一个li获取到,并改变其颜色。则可以使用

: first-child

在浏览器中显示的效果:

通过$("li:first-child")选择器代码,获取了两个<ul>父元素中的第一个<li>元素,并使用 css() 方法修改了它们在页面中显示的文字颜色。

:last-child 子元素过滤选择器

:first-child子元素过滤选择器功能相反,:last-child子元素过滤选择器的功能是获取每个父元素中返回的最后一个子元素,它也是一个集合,常用多个集合数据的选择处理。

例如,使用:last-child子元素过滤选择器,修改"蔬菜"和"水果"中最后一个显示的文字颜色,如下图所示:

在浏览器中显示的效果:

从图中可以看出,通过$("li:last-child")选择器代码,获取了两个<ul>父元素中的最后一个<li>元素,并使用 css() 方法修改了它们在页面中显示的文字颜色。

编程练习

在页面中,添加一个<ul>元素,里面放置多个(至少 7 个以上)的<li>元素,此外,再添加一个<a>元素.

任务

初始时: <ul>元素中仅显示 5 个<li>元素,其中包含还包括最后一个<li>元素,<a>元素中的显示"更多"字符.

当点击"更多"链接时,自身内容变为"简化",同时,<ul>元素中显示全部的<li>元素.

当点击"简化"链接时,自身内容变为"更多",同时,<ul>元素中仅显示包含最后一个<li>元素在内的 5 个元素.

<body>
    <ul>
        <li>001</li>
        <li>002</li>
        <li>003</li>
        <li>004</li>
        <li>005</li>
        <li>006</li>
        <li>007</li>
    </ul>
    <a  href="javascript:;">更多</a>
    <script>
        $(function(){
            $("li:eq(3)").css("display","none");
            $("li:eq(4)").css("display","none");
            
            $("a").click(function(){
                if($("a").html() == "更多"){
                    $("a").html("简化");
                    $("li:eq(3)").css("display","list-item");
                    $("li:eq(4)").css("display","list-item");
                } else {
                    $("a").html("更多");
                    $("li:eq(3)").css("display","none");
                    $("li:eq(4)").css("display","none");                    
                }
            });
            
        })
    </script>
</body>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 落花随着水流 飘零任凭溪游 月色模糊了你足迹 月光映照入我心底 痴傻相望 不知相隔千里 默然等候 只怕万年轮回 于...
    DCTXM阅读 68评论 0 1
  • No.55 最近一直在别离——面对各种各样的别离,有些是有准备的,有些却是突如其来的,有些解决的很好我很开心,有些...
    水浅_bling阅读 445评论 0 0
  • 广州的夏天大概是有毒。 不管你做了多少防晒消暑的措施,一出门,还是要扑街。 每当这个时候,就格外羡慕这家人—— 同...
    Sir电影阅读 909评论 0 3
  • day1:游轮在大海中持续航行,传递到房间的震动持续而绵密,有种坐动车的感觉,但是震动的力度要比动车大上一些。回想...
    chineseniu阅读 307评论 0 0