jquery选择器(2)

1. jQuery选择器简介

​ 在程序开发中,无论是操作DOM还是为元素添加事件,都需要先获取到指定元素。为此,jQuery提供了选择器,通过选择器可以获取元素并对元素进行操作。

1.1 什么是jQuery选择器

​ 通过css选器获取元素的方式是非常灵活的,但是css选择器获取元素后只能操作该元素的样式,要想为元素添加行为(如处理单击事件),还需要通过 JavaScript代码来实现。为此,jQuery模仿css选择器实现了 jQuery选择器,通过 jQuery选择器来获取元素,不仅让获取元素的方式更加多样化,而且可以在获取元素后为元素添加行为。

语法:

$(selector)

特性: 方式更加多样化,还可以为元素添加行为;

执行: 返回一个jQuery对象。

示例:

<div id="myDiv">我是一个Div</div>
    <script>
        $('#myDiv').css('border', '1px solid black');
    </script>		

注意:

使用jQuery选择器获取元素后,由于返回的是jQuery对象,所以不仅能为元素添加样式,还支持为元素添加行为。例如,为元素绑定事件、操作元素属性等操作,此处只要了解jQuery选择器的使用即可。

1.2 jQuery选择器的优势

获取方式: 更加简洁,获取方式更多;

选择器: 支持从CSS1到CSS3及常用的选择器;

<script>
    //DOM和Jquery的对比
    //DOM
    document.getElementById('id的值')//根据值获取元素
    document.getElemtntBtTagName('元素的名')//根据元素的名称获取元素
    //jQuery
    $('#id的值');//根据id值获取元素
    $('元素的名称');//根据元素的名称获取元素
</script>

2. 基本选择器

jQuery中基本选择器是最简单直观的选择器,包括id选择器、类选择器、元素选择器和通配符选择器。

选择器描述返回值
#idid选择器单个元素
.class类选择器元素集合
element元素选择器元素集合
*通配符选择器元素集合
selector1,…同时获取多个元素元素集合
<style>
    div {
        border: 1px solid black;
    }
</style>
<body>
    <div id="byId">第一个id选择器</div>
    <p>第一个p元素</p>
    <p class="byClass">第一个class选择器</p>
    <div class="byClass">第二个class选择器</div>
    <script>
        //id选择器
        $('#byId').css('background', 'blue');
        //类选择器
        $('.byClass').css('background', 'yellow');
        //元素选择器
        $('p').css('color', 'blue');
        //通配符选择器
        $('*').css('border', '2px solid red');
        //获取多选择器
        $('p,#byId').css("font-weight", 'bold');
    </script>
</body>

在这里插入图片描述

注意:

虽然通配符选择器可匹配所有的元素,但会影响网页渲染的时间。因此,实际开发中应尽量避免使用通配符选择器。取而代之的是,在需要时,可在jQuery的$()中使用逗号,即可同时获取多个元素。

3. 层次选择器

层次选择器中的“层次”是指DOM元素的层次关系。

选择器描述返回值
parent>child子元素选择器元素集合
selector selector1后代选择器元素集合
pre+next兄弟选择器元素集合
pre~siblings兄弟选择器元素集合
<p>这是div前的p元素</p>
    <div id="dv">
        <p>这是div中的p元素</p>
        <ul>
            <li>这是第一个li元素</li>
            <li><p>这是第二个li元素中的p元素</p></li>
        </ul>
        <p>这是div中的第二个p元素</p>
    </div>
    <p>这是div后面的第一个p元素</p>
    <p>这是div后面的第二个p元素</p>
    <p>这是div后面的第三个p元素</p>
    <script>
        //子元素选择器
        $('#dv > p').css('color','blue');
        //后代选择器
        $('#dv p').css('font-weight','bold');
        //兄弟选择器(也称同辈选择器或同级选择器)
            //"+"获取元素下一个相邻的一个兄弟元素
        $('#dv+p').css('border','1px solid black');
            //"~"获取元素下一个相邻的所有兄弟元素
        $('#dv~p').css('text-decoration','underline wavy red');
    </script>

在这里插入图片描述

扩展:

(1) children()方法

在jQuery中,还可以使用children()方法代替子元素选择器,获取指定元素的子元素。

<script>
    $('#dv > p');//使用子元素选择器获取
    $('#dv').children('p');//使用children()方法获取
</script>
(2)find()方法

在jQuery中,还可以使用find ()方法获取指定元素的后代元素。

<script>
    $('#dv p');//使用后代选择器获取
    $('#dv').find('p');//使用find()方法获取
</script>
(3)next()、nextAll()、prev()、prevAll()和siblings()方法的使用
  • next():可获取指定元素紧邻的下一个兄弟元素;
  • nextAll():可获取指定元素后的所有兄弟元素;
  • prev():可获取指定元素紧邻的上一个兄弟元素;
  • nextAll():可获取指定元素前的所有兄弟元素;
  • siblings():则可获取指定元素的所有兄弟元素。
<script>
    //next()方法与$('#dv + p')相似
    $('#dv + p');
    $('#dv').next('p');
    
    //nextAll()方法与$('#dv ~ -p')相似
    $('#dv ~p');
    $('#dv').nextAll('p');
    
    //prev()是与next()相反,获取指定元素相邻的前一个元素
    $('#dv').prev('p');
    
    //prevAll()是与nextAll()相反,获取指定元素前所有元素
    $('#dv').prevAll('p');
    
    //siblings()方法是相当于nextAll()和prevAll()的结合,获取指定元素的所有元素
</script>
(4)parent()方法
  • parent():获取指定元素的父类
<div>
    <p class='app'></p>
</div>
<script>
    $('#app').parent();//获取到自己的父类div
</script>

4. 过滤选择器

过滤选择器: 为了快速筛选DOM元素,jQuery提供了一些过滤选择器。

使用方式: 类似于CSS选择器,以“:”开头,后用于指定规则;

例子: “:first”,用于获取第一个元素。

1.基本过滤选择器

基本过滤选择器: 过滤规则多数与元素的索引值有关。

选择器描述返回值
:first获取第一个元素单个元素
:last获取最后一个元素单个元素
:not(selector)获取所有元素除了该选择器元素集合
:even获取所有为奇数的元素元素集合
:odd获取所有为偶数的元素元素集合
:eq(index)获取指定索引值的元素单个元素
:gt(index)获取所有大于索引值的元素元素集合
:lt(index)获取所有小于索引值的元素元素集合
:header获取标题类型的元素h1…元素集合
:animated获取执行动画效果的元素元素集合
    <h1>12</h1>
    <h2>22</h2>
    <ul style="width: 200px;">
        <li>How</li>
        <li class="one">are</li>
        <li>you</li>
        <li>????</li>
    </ul>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
    <script>
        //索引值为偶数的li
        $('li:even').css('backgroundColor', 'pink');
        //索引值为奇数的li
        $('li:odd').css('backgroundColor', 'yellow');
        //索引除了.one元素
        $('li:not(.one)').css('border', '1px solid black');
        //索引第一个元素
        $('li:first').css('font-weight', 'bold');
        //索引最后一个元素
        $('li:last').css('text-decoration', 'underline wavy red')
        //获取指定索引元素开始
        $('p:eq(1)').css('backgroundColor', 'green');
        //获取大于索引2 元素开始
        $('p:gt(2)').css('font-weight', 'bold');
        //获取小于索引2 元素开始
        $('p:lt(2)').css('font-size', '24px');
        //获取所有标题元素
        $(':header').css('color', 'blue')
    </script>

在这里插入图片描述

2.可见性选择器

在网页开发中,具有动态效果的页面往往有很多元素被隐藏。举例: 折叠式菜单。

选择器描述返回值
:visible获取所有的可见元素元素集合
:hidden获取所有的不可见元素元素集合

:hidden选择器:

  • 可以获取CSS样式为“display: none”。

  • 属性“type=“hidden””的文本隐藏域。

:visible选择器: 获取所有可见元素。

<p id="div">显示文本1</p>
    <p id="vis">显示文本2</p>
    <input type="hidden" value="隐藏文本域">
    <script>
        //获取所有可见元素,并上颜色
        $(':visible').css('backgroundColor', 'yellow');
        //在控制台输出元素集合
        console.log($(':visible'));
</script>

在这里插入图片描述

:hidden选择器: 无法获取隐藏方式“visibility:hidden”的隐藏元素。

<p id="div">显示文本1</p>
    <p id="vis">显示文本2</p>
    <input type="hidden" value="隐藏文本域">
    <script>
        //获取显示的p元素,设置两种不同的隐藏方式
        $('#div:visible').css('display', 'none');
        $('#vis:visible').css('visibility', 'hidden');
        //获取隐藏的元素,在控制台输出元素集合
        console.log('隐藏的p元素:');
        console.log($('p:hidden'));
        console.log('隐藏域input:');
        console.log($('input:hidden'))
    </script>

在这里插入图片描述

注意:

Input隐藏域一般不会设置样式,但是如果为input隐藏域设置CSS样式为“visibility:hidden”,“:hidden”选择器同样可以获取到该元素。

3.内容过滤选择器

元素的内容是指它所包含的子元素或文本内容。

内容过滤选择器: 可根据元素的内容来获取元素。

选择器描述返回值
:contains(text)获取包含给定文本的元素元素集合
:empty获取所有不包含子元素或空元素元素集合
:has(selector)获取含有选择器匹配的元素元素集合
:parent获取含有子元素或文本的元素元素集合
<style>
    div {
        width: 300px;
        height: 30px;
        margin: 5px;
        border: 1px solid black;
    }
</style>

<body>
    <div>我是div元素的文本</div>
    <div>我也是div元素的文本</div>
    <div><span>我是div元素中span元素的文本</span></div>
    <div></div>
    <script>
        //获取文本中包含“也”字的元素
        $('div:contains(也)').css('backgroundColor', 'pink');
        //获取文本中包含子元素span的元素
        $('div:has(span)').css('backgroundColor', 'yellow');
        //获取没有元素内容的元素
        $('div:empty').css('backgroundColor', 'red');
        //获取内容不为空的元素
        $('div:parent').css('border', '4px double green');
    </script>
</body>

在这里插入图片描述

4.过滤选择器

属性选择器: 通过元素的属性来筛选元素。

使用方式: jQuery的属性过滤选择器将过滤规则包裹在“[]”中。

选择器描述返回值
[attribute]获取包含给定属性的元素元素集合
[attribute=value]获取等于给定的属性是某个特定值的元素元素集合
[attribute!=value]获取不等于给定的属性是某个特定值的元素元素集合
[attribute^=value]获取给定的属性是以某些值开始的元素元素集合
[attribute$=value]获取给定的属性是以某些值结尾的元素元素集合
[attribute*=value]获取给定的属性是以包含某些值的元素元素集合
[selector1][selectorN]获取满足多个条件的复合属性的元素元素集合
<style>
    div {
        width: 200px;
        margin: 5px;
        border: 1px solid black;
    }
</style>

<body>
    <div class="dv">class=dv</div>
    <div title="标题">title=标题</div>
    <div class="dv1" title="标题1">class=dv1 title=标题1</div>
    <div class="dv1" title="标题2">class=dv1 title=标题2</div>
    <script>
        //获取以d开头的元素
        $('[class^=d]').css('background', 'yellow');
        //获取class值为dv1且title值包含“2”的元素
        $('[class=dv1][title*=2]').css('border', '4px solid red');
        //获取以题结尾的元素
        $('[title$=题]').css('font-weight', 'bold');
    </script>
</body>

在这里插入图片描述

5.子元素过滤选择器

子元素过滤选择器: 通过父元素和子元素相应关系来获取相应元素。
优势:

  • 同时获取不同父元素下满足条件的子元素。
  • 与层次选择器中的子元素选择器相比拥有较灵活的过滤规则。
选择器描述返回值
:first-child获取每个父元素下的第一个子元素元素集合
:last-child获取每个父元素下的最后一个子元素元素集合
:only-child获取每个仅有一个子元素的父元素下的子元素元素集合
:nth-child(eq|even|odd|index)获取每个元素下的特定元素索引号从1开始元素集合
	<ul>
        <li>北京</li>
        <li>上海</li>
    </ul>
    <ul>
        <li>广州</li>
        <li>深圳</li>
    </ul>
    <ul>
        <li>天津</li>
    </ul>
    <ul>
        <li>重庆</li>
    </ul>
    <script>
        //获取每一个ul列表的第一个li
        //:nth-child的参数索引值从1开始
        $('li:nth-child(1)').css('border', '1px solid black');
        //获取每一个ul列表中只有一个li
        $('li:only-child').css('background', 'yellow');
        //获取每一个ul列表的第一个li
        $('li:first-child').css('color', 'red');
        //获取每一个ul列表的最后一个li
        $('li:last-child').css('color', 'green');
    </script>

在这里插入图片描述

6.表单过滤选择器

表单过滤选择器: 可以在页面中快速定位表单中某个类型元素的集合。

选择器描述返回值
:input获取表单中所有input|textarea|select|button元素元素集合
:text获取表单中所有input[type=text]的元素元素集合
:password获取表单中所有input[type=password]的元素元素集合
:radio获取表单中所有input[type=radio]的元素元素集合
:checkbox获取表单中所有input[type=checkbox]的元素元素集合
:submit获取表单中所有input[type=submit]的元素单个元素
:image获取表单中所有input[type=image]的元素元素集合
:reset获取表单中所有input[type=reset]的元素元素集合
:button获取所有input[type=button]的元素和button元素元素集合
:file获取表单中所有input[type=file]的元素元素集合

注意:

  • :button选择器:使用input[type=button]和button元素定义的按钮。
  • :image择器:使用input[type=image]定义的图像不包含img定义的图像。
<form id="myForm">
        名称:<input type="text" value="text"><br>
        密码:<input type="password" value="password"><br>
        性别:<input type="radio"><span></span>
        <input type="radio"><span></span><br>
        爱好:<input type="checkbox"><span>游泳</span>
        <input type="checkbox"><span>旅行</span><br>
        照片1:<img src="./10001.jpeg" height="200px"><br>
        照片2:<input type="image" src="./10001.jpeg" height="150px"><br>
        说明:<textarea></textarea><br>
        <input type="reset" value="重置">
        <input type="submit" value="提交">
        <button>清空</button>
        <input type="button" value="保存">
    </form>
    <script>
        //:button选择器:获取按钮然后调用hide()方法隐藏元素。
        $('#myForm :button').hide();
        //:image选择器:获取input[type=image]定义的图像然后隐藏图像。
        $('#myForm :image').hide();
        //:input选择器:获取包含input、textarea的所有控件然后隐藏匹配元素。
        $('#myForm :input').hide();
    </script>

在这里插入图片描述

7.表单对象属性过滤选择器

表单对象有一些专有属性用于表示表单的某种状态。

表单对象属性过滤选择器: 通过表单中的对象属特征获取该元素。

选择器描述返回值
:enable获取表单中所有属性为可用的元素元素集合
:disable获取表单中所有属性为不可用的元素元素集合
:checked获取表单中所有被选中的元素元素集合
:selected获取表单中所有被选中option的元素元素集合
<form id="myForm">
        名称:<input type="text" value="text"><br>
        密码:<input type="password" value="password"><br>
    <!--选中状态-->
        性别:<input type="radio" name="sex" value="male" checked="checked"><span></span>
        <input type="radio" name="sex" value="female"><span></span><br>
    <!--选中状态-->
        爱好:<input type="checkbox" checked="checked"><span>游泳</span>
        <input type="checkbox"><span>旅行</span><br>
        照片1:<img src="./10001.jpeg" height="200px"><br>
        照片2:<input type="image" src="./10001.jpeg" height="150px"><br>
        说明:<textarea></textarea><br>
        <input type="reset" value="重置">
        <input type="submit" value="提交">
        <button>清空</button>
        <input type="button" value="保存">
    </form>
    <script>
        //:checked选择器:选择器获取选中状态的元素然后隐藏。
        $('input:checked').hide();
    </script>

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值