jQuery之选择器

概述

说明:

  选择器本身只是一个有特定语法规则的字符串,没有实质用处。它的基本语法规则使用的就是CSS的选择器语法,并对其进行了扩展。只有调用$(),并将选择器作为参数传入才能起作用。

  $(selector)作用:根据选择器规则在整个文档中查找所有匹配的标签的数组,并封装成jQuery对象返回。

分类:

  基本选择器

  层级选择器

  过滤选择器

  表单选择器

基本选择器

说明:

  最基本最常用的选择器。

分类:

  #idid选择器,根据id查找标签对象。

  element:元素选择器,根据标签名查找标签对象。

  .class:属性选择器,根据class查找标签对象。

  *:任意标签,所有元素。

  selector1,selector2,selectorN:取多个选择器的并集结果并返回(组合选择器)。

  selector1selector2selectorN:取多个选择器的交集结果并返回(相交选择器)。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本选择器</title>
</head>
<body>

<div id="div1" class="box">div1(class="box")</div>
<div id="div2" class="box">div2(class="box")</div>
<div id="div3">div3</div>
<span class="box">span(class="box")</span>
<br>
<ul>
    <li>AAAAA</li>
    <li title="hello">BBBBB(title="hello")</li>
    <li class="box">CCCCC(class="box")</li>
    <li title="hello">DDDDDD(title="hello")</li>
</ul>

<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">

    /*
     * 需求:
     * 1.选择id为div1的元素
     * 2.选择所有的div元素
     * 3.选择所有class属性为box的元素
     * 4.选择所有的div和span元素
     * 5.选择所有class属性为box的div元素
     */
    $(function (){
        //1.选择id为div1的元素
        $('#div1').css('background', 'red');
        //2.选择所有的div元素
        $('div').css('background', 'red');
        //3.选择所有class属性为box的元素
        $('.box').css('background', 'red');
        //4.选择所有的div和span元素
        $('div,span').css('background', 'red');
        //5.选择所有class属性为box的div元素
        $('div.box').css('background', 'red');//不能写.boxdiv
    });
</script>
</body>
</html>

层级选择器

说明:

  查找子元素、后代元素、兄弟元素的选择器。

分类:

  ancestor descendant:后代选择器,在给定的祖先元素下的后代元素中匹配元素。

  parent > child:子元素选择器,在给定的父元素下的子元素中匹配元素。

  prev + next:相邻元素选贼器,匹配所有紧接在prev元素后的next元素。

  prev ~ siblings:后代兄弟选择器,匹配prev元素之后的所有siblings元素。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层次选择器</title>
</head>
<body>

<ul>
    <li>AAAAA</li>
    <li class="box">CCCCC</li>
    <li title="hello"><span>BBBBB</span></li>
    <li title="hello"><span>DDDD</span></li>
    <span>EEEEE</span>
</ul>

<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">

    /*
     * 需求:
     * 1.选中ul下所有的的span
     * 2.选中ul下所有的子元素span
     * 3.选中class为box的下一个li
     * 4.选中ul下的class为box的元素后面的所有兄弟元素
     */
    $(function (){
        //1.选中ul下所有的的span
        $('ul span').css('background', 'red');
        //2.选中ul下所有的子元素span
        $('ul>span').css('background', 'red');
        //3.选中class为box的下一个li
        $('.box+li').css('background', 'red');
        //4.选中ul下的class为box的元素后面的所有兄弟元素
        $('ul .box~*').css('background', 'red');
    });
</script>
</body>
</html>

过滤选择器

说明:

  在原有选择器匹配的元素中进一步进行过滤的选择器。

基本过滤器:

  :first:获取第一个元素。

  :last:获取最后个元素。

  :not(selector):去除所有与给定选择器匹配的元素。

  :even:匹配所有索引值为偶数的元素,从0开始计数。

  :odd:匹配所有索引值为奇数的元素,从0开始计数。

  :eq(index):匹配一个给定索引值的元素。

  :gt(index):匹配所有大于给定索引值的元素。

  :lt(index):匹配所有小于给定索引值的元素。

  :header:匹配如h1,h2,h3之类的标题元素。

  :animated:匹配所有正在执行动画效果的元素。

内容过滤器:

  :contains(text):匹配包含给定文本的元素。

  :empty:匹配所有不包含子元素或者文本的空元素。

  :parent:匹配含有子元素或者文本的元素。

  :has(selector):匹配含有选择器所匹配的元素的元素。

属性过滤器:

  [attribute]:匹配包含给定属性的元素。

  [attribute=value]:匹配给定的属性是某个特定值的元素。

  [attribute!=value]:匹配所有不含有指定的属性,或者属性不等于特定值的元素。

  [attribute^=value]:匹配给定的属性是以某些值开始的元素。

  [attribute$=value]:匹配给定的属性是以某些值结尾的元素。

  [attribute*=value]:匹配给定的属性是以包含某些值的元素。

  [attrSel1][attrSel2][attrSelN]:复合属性选择器,需要同时满足多个条件时使用。

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤选择器</title>
</head>
<body>

<div id="div1" class="box">class为box的div1</div>
<div id="div2" class="box">class为box的div2</div>
<div id="div3">div3</div>
<span class="box">class为box的span</span>
<br/>
<ul>
    <li>AAAAA</li>
    <li title="hello">BBBBB</li>
    <li class="box">CCCCC</li>
    <li title="hello">DDDDDD</li>
    <li title="two">BBBBB</li>
    <li style="display:none">我本来是隐藏的</li>
</ul>

<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">

    /*
     * 需求:
     * 1.选择第一个div
     * 2.选择最后一个class为box的元素
     * 3.选择所有class属性不为box的div
     * 4.选择第二个和第三个li元素
     * 5.选择内容为BBBBB的li
     * 6.选择隐藏的li
     * 7.选择有title属性的li元素
     * 8.选择所有属性title为hello的li元素
     */
    $(function (){
        //1.选择第一个div
        $('div:first').css('background', 'red');
        //2.选择最后一个class为box的元素
        $('.box:last').css('background', 'red');
        //3.选择所有class属性不为box的div
        $('div:not(.box)').css('background', 'red');
        //4.选择第二个和第三个li元素
        $('li:gt(0):lt(2)').css('background', 'red'); //索引起始位置发生变化,重新开始计算
        $('li:lt(3):gt(0)').css('background', 'red'); //正确索引位置
        //5.选择内容为BBBBB的li
        $('li:contains(BBBBB)').css('background', 'red');
        //6.选择隐藏的li
        $('li:hidden ').show();
        //7.选择有title属性的li元素
        $('li[title]').css('background', 'red');
        //8.选择所有属性title为hello的li元素
        $('li[title=hello]').css('background', 'red');
    });
</script>
</body>
</html>

表单选择器

表单:

  :input:匹配所有input、textarea、selectbutton元素。

  :text:匹配所有文本输入框。

  :password:匹配所有的密码输入框。

  :radio:匹配所有的单选框。

  :checkbox:匹配所有的复选框。

  :submit:匹配所有提交按钮。

  :image:匹配所有img标签。

  :reset:匹配所有重置按钮。

  :button:匹配所有input type = button<button>按钮。

  :file:匹配所有input type = file文件上传。

  :hidden:匹配所有不可见元素display:noneinput type = hidden

表单对象属性:

  :enabled:匹配所有可用元素。

  :disabled:匹配所有不可用元素。

  :checked:匹配所有选中的单选、复选、下拉列表中选中的option标签对象。

  :selected:匹配所有选中的option

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单选择器</title>
</head>
<body>

<form>
    用户名: <input type="text"/><br>
    密码: <input type="password"/><br>
    爱好:
    <input type="checkbox" checked="checked"/>篮球
    <input type="checkbox" checked="checked"/>足球
    <input type="checkbox" checked="checked"/>羽毛球 <br>
    性别:
    <input type="radio" name="sex" value='male'/><input type="radio" name="sex" value='female'/><br>
    邮箱: <input type="text" name="email" disabled="disabled"/><br>
    所在地:
    <select>
        <option value="1">北京</option>
        <option value="2" selected="selected">天津</option>
        <option value="3">河北</option>
    </select><br>
    <input type="submit" value="提交"/>
</form>

<script type="text/javascript" src="../js/jquery.min.js"></script>
<script type="text/javascript">

    /*
     * 需求:
     * 1.选择不可用的文本输入框
     * 2.显示选择爱好的个数
     * 3.显示选择的城市名称
     */
    $(function (){
        //1.选择不可用的文本输入框
        $(':input:disabled').css('background', 'red');
        //2.显示选择爱好的个数
        console.log($(':checkbox:checked').length);
        //3.显示选择的城市名称
        console.log($('select>option:selected').html());
        console.log($('select').val()); //得到的是选择的option的value
    });
</script>
</body>
</html>