欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小白入门第九天 —— jQuery选择器

程序员文章站 2022-06-16 10:27:55
...

了解一下什么是选择器

匹配对应的HTML元素

DOM也有类似用法,如querySelector()方法querySelectorAll()方法,就是利用css选择器定位的页面元素。

jQuery相比于DOM的性能要好。

jQuery选择器是将工厂函数当作容器,语法:

  • var element = $(selector);
    

    selector – 是参数,表示jQuery的选择器。

    完整:

    <head>
    	<script src="./jQuery文件/jquery.js"></script>
    </head>
    <body>
        <button id="btn"></button>
        <script>
            var element = $(btn);
            console.log(element);
        </script>
    </body>
    // jQuery.fn.init [button#btn, context: button#btn]
    
  • $('#one').css('background','#bfa');
    

    返回值 – jQuery的工厂函数会返回一个jQuery对象。

    返回:

    jQuery.fn.init {context: document, selector: "#one"}
    

jQuery定义一个元素时,仍然是一个集合。

选择器有哪些

基本选择器

基本选择器

  1. ID选择器
  2. 元素选择器
  3. 类选择器
  4. 通配选择器
  5. 组合选择器

描述:

选择器 描述
ID选择器 根据给定ID匹配元素
元素选择器 根据给定名称匹配元素
类选择器 根据给定类名匹配元素
通配选择器 匹配所有元素
组合选择器 把每一个选择器匹配到的元素合并一起返回
<body>
    <div id="d1">基本选择器</div>
    <div id="d2" class="c1">类选择器</div>
    <script>
        // ID选择器
        console.log($('#d1')); 
        //    jQuery.fn.init(1)
        /*  0: div#d1
        */

        //  元素选择器
        console.log($('div'));
        //    jQuery.fn.init(2)
        /*  0: div#d1
            1: div#d2.c1
        */

        //  类选择器
        console.log($('.c1'));
        //    jQuery.fn.init(1)
        /*  0: div#d2.c1
        */

        //----   
        console.log($('class'));
        //    jQuery.fn.init(0)

        //  通配选择器  -- 找所有元素
        console.log($('*'));
        //    jQuery.fn.init(10)
        /*  0: html
            1: head
            2: meta
            3: meta
            4: title
            5: script
            6: body
            7: div#d1
            8: div#d2.c1
            9: script
        */

        //  组合选择器  -- 多个选择器用逗号隔开
        console.log($('#d1,.c1')); //加逗号是并集
        //    jQuery.fn.init(2)
        /*  0: div#d1
            1: div#d2.c1
        */
        //多个选择器没有分隔
        console.log($('#d1.c1')); //不加逗号是交集
        //    jQuery.fn.init(0)
        
        console.log($('#d2.c1')); //不加逗号是交集
        //    jQuery.fn.init(1)
        /*   0: div#d2.c1
        */
    </script>
</body>

层级选择器

层级选择器

  1. 后代选择器
  2. 子选择器
  3. 相邻兄弟选择器
  4. 普通兄弟选择器

描述:

选择器 描述
后代选择器 根据祖父元素匹配所有后代元素
子选择器 根据父元素匹配所有子元素
相邻兄弟选择器 根据目标元素匹配下一个相邻兄弟元素
普通兄弟选择器 根据目标元素匹配后面所有兄弟元素
<body>
    <div id="parent">
        <div id="child1">
            <div id="d6"></div>
            <div id="d1"></div>
            <div id="d2"></div>
            <div id="d3"></div>
            <div id="d4"></div>
        </div>
        <div id="child2">
            <div id="d5"></div>
        </div>
    </div>
    <script>
        //获取父级以下的元素
        console.log($('#parent div'));
        //   jQuery.fn.init(7)
        /*  0: div#child1
            1: div#d1
            2: div#d2
            3: div#d3
            4: div#d4
            5: div#child2
            6: div#d5
        */

        //根据父级获取子级元素
        console.log($('#parent>div'));
        //   jQuery.fn.init(2)
        /*  0: div#child1
            1: div#child2
        */

        //指定元素的下一个相邻兄弟元素
        console.log($('#d1+div'));
        //   jQuery.fn.init(1)
        /*  0: div#d2
        */

        //指定元素的后面所有的兄弟元素 
        console.log($('#d1~div'));
        //   jQuery.fn.init(3)
        /*  0: div#d2
            1: div#d3
            2: div#d4
        */
        // siblings - 获取指定元素的兄弟元素的(前+后)
        console.log($('#d1').siblings('div'));
        /*  0: div#d6
            1: div#d2
            2: div#d3
            3: div#d4
        */
        
    </script>
</body>

基本过滤选择器

基本过滤选择器

  1. :first过滤选择器
  2. :last过滤选择器
  3. :even过滤选择器
  4. :odd过滤选择器
  5. :eq()过滤选择器
  6. :gt()过滤选择器
  7. :lt()过滤选择器
  8. :not()过滤选择器
  9. :header过滤选择器
  10. :animated过滤选择器

描述:

选择器 描述
first过滤选择器 获取第一个元素
:last过滤选择器 获取最后一个元素
:even过滤选择器 找所有偶数索引值(奇数元素),从0开始
:odd过滤选择器 找所有奇数索引值(偶数元素),从0开始
:eq()过滤选择器 找一个和给定索引值一样的元素
:gt()过滤选择器 找所有大于给定索引值的元素
:lt()过滤选择器 找所有小于给定索引值的元素
:not()过滤选择器 去掉所有与给定选择器相匹配的元素
:header过滤选择器 找h1类的标题元素
:animated过滤选择器 找所有正在执行动画效果的元素

注:jQuery对象是类数组对象,即使匹配的元素只有一个,返回的结果还是类数组对象。

<style>
    #dong{
        width: 100px;
        height: 150px;
        background-color: aqua;
    }
</style>
<body>
    <h1>biaoti1</h1>
    <h7>biaoti2</h7>
    <div>基本过滤选择器</div>
    <div id="d2">
        <div id="child"></div>
    </div>
   <div></div>
   <div></div> 
   <div></div> 
   <div id="dong"></div> 
   <script>
       //要在指定范围元素内筛选
       console.log ($('div:first'));
       /*  0: div
       */
       console.log ($('div:last')); //获取最后个元素
        /*  0: div
       */

        //索引值为偶数
        console.log($('div:even')); //找所有奇数元素
        /*  0: div
            1: div#child
            2: div
            3: div#dong
        */
        //索引值为奇数
        console.log($('div:odd'));  //找所有偶数元素
        /*  0: div#d2
            1: div
            2: div
        */

        //比较的
        console.log($('div:eq(0)')); // 匹配给定索引值的元素
        /*  0: div
        */
        console.log($('div:gt(2)')); // 大于给定索引值的元素
        /*  0: div
            1: div
            2: div
            3: div#dong  
        */
        console.log($('div:lt(2)')); // 小于给定索引值的元素
        /*  0: div
            1: div#d2 
        */

        //匹配h1~h7元素
        console.log($(':header'));  //找标题元素
        /*  0: h1
            1: h7
        */

        function dong(){
            $('#dong').slideToggle(dong);
        }
        dong();

        console.log($(':animated'));  //:animated --  只能匹配jQuery实现的动画
        /*  0: div#dong
        */

        //去掉所有与给定选择器相匹配的元素
        console.log($('div:not("#chilsd")'));
        /*  0: div
            1: div#d2
            2: div#child
            3: div
            4: div
            5: div
            6: div#dong
        */
   </script>
</body>

内容过滤选择器

  1. :contains() 过滤选择器
  2. :empty 过滤选择器
  3. parent 过滤选择器
  4. has() 过滤选择器

描述:

选择器 描述
:contains() 过滤选择器 寻找包含给定文本的元素
:empty 过滤选择器 寻找所有不包含子元素或者文本的空元素
:parent 过滤选择器 寻找含有子元素或者文本的元素
has() 过滤选择器 寻找含有选择器所匹配的元素的元素
<div>div元素</div>
    <div></div>
    <div>
        <div id="child"></div>
    </div>
    <script>
        //寻找包含给定文本的元素
        console.log($('div:contains("di")'));
        /*
            0: div
        */

        //寻找所有不包含子元素或者文本的空元素
        console.log($('div:empty'));
        /*
            0: div
            1: div#child
        */

        //寻找含有子元素或者文本的元素
        console.log($('div:parent'));
        /*
            0: div
            1: div
        */

        //:has() -- 寻找含有选择器所匹配的父级元素
        console.log($('div:has("#child")')[0]);
        /*以div为标准去找div里#child的父级
        <div>
            <div id="child"></div>
        </div>
        */
    </script>

可见性过滤选择器

可见性过滤选择器

  1. :hidden过滤选择器
  2. :visible过滤选择器

描述:

选择器 描述
:hidden过滤选择器 匹配所有不可见元素,或者type为hidden的元素
:visible过滤选择器 匹配所有的可见元素
<style>
        #d1{
            display: none;
        }
        #d2{
            visibility: hidden;
        }
</style>
<body>
    <div id="d1">可见性</div>
    <div id="d2">过滤选择器</div>
    <input type="hidden" value="用户名">
    <input type="text" value="username">
    <script>
        /*:hidden*/
        /*  不能匹配样式属性visibility为hidden的隐藏元素
            不能匹配html中不做显示效果的元素
        */
        /*使用时先确定元素类型或指定范围*/
       console.log($(':hidden'));   //所有不可见元素,或者type为hidden的元素
        /*   0: head
            1: meta
            2: meta
            3: title
            4: script
            5: style
            6: div#d1
            7: input
            8: script 
        */

        /*visible*/
        /*   能匹配样式属性visibility为hidden的隐藏元素
                visibility为hidden时,还是会占有页面空间   
            还能匹配HTML中的html和boby元素 
        
        */
        console.log($(':visible'));
        /*  0: html
            1: body
            2: div#d2
            3: input
        */
    </script>
</body>    

属性过滤选择器

  1. [attr] 过滤选择器
  2. [attr=value] 过滤选择器
  3. [attr!=value] 过滤选择器
  4. [attr^=value] 过滤选择器
  5. [attr$=value] 过滤选择器
  6. [attr*=value] 过滤选择器
  7. 组合属性过滤选择器
选择器 描述
[attr] 过滤选择器 匹配包含给定属性的元素
[attr=value] 过滤选择器 匹配给定的元素是某个特定值的元素
[attr!=value] 过滤选择器 匹配所有不含有指定的元素,或者属性不等于特定值的元素
[attr^=value] 过滤选择器 匹配给定的属性是以某些值开始的元素
[attr$=value] 过滤选择器 匹配给定的属性是以某些值结尾的元素
[attr*=value] 过滤选择器 匹配给定的属性是以包含某些值的元素
组合属性过滤选择器 匹配元素需要同时满足多个属性过滤选择器
<body>
    <div id="username" name='d1' class="mydiv"></div>
    <div id="password" name='d2' class="mycls"></div>
    <div id="d3"></div>
    <div class="myd"></div>
</body>
<script>
    //匹配包含给定了的属性的元素
    console.log($('div[name]'));
    /*
    0: div#username.myd
    1: div#password.myc
    */

    //匹配给定了的属性的元素
    console.log($('div[class=mydiv]'));
    /*
    0: div#username.myd
    1: div.myd
    */

    //匹配所有不含有指定的属性
    console.log($('div[class!=myd]'));
    /*
    0: div#username.mydiv
    1: div#password.myc
    2: div#d3
    */

    //匹配以给定的属性开始的元素
    console.log($('div[class^=my]'));
    /*
    0: div#username.mydiv
    1: div#password.mycls
    2: div.myd
    */

    //组合选择器  --  交集
    console.log($('div[name=d1][class^=my]'));
    /*
    0: div#username.mydiv
    */

    //以给定属性结尾的元素
    console.log($('div[class$=s]'))
    /*
    0: div#password.mycls
    */

</script>

子属性过滤选择器

  1. :nthchild()过滤器
  2. :fist-child()过滤器
  3. :last-child()过滤器
  4. :only-child()过滤器

描述:

选择器 描述
:nth-child()过滤器 匹配所给属性的父元素下的某个元素
:fist-child()过滤器 匹配一个子元素
:last-child()过滤器 匹配最后一个元素
:only-child()过滤器 如果该元素是父元素的唯一子级,就会匹配
<body>
    <div id="fu">
        <div id="d1">d1</div>
        <div id="d2">d2</div>
        <div id="d3">d3
            <div id="child"></div>
        </div>
    </div>
    <script>
        //匹配第一个子元素
        console.log($('div:first-child'));
        /*
        0: div#fu
        1: div#d1
        2: div#child
        */
        
        //匹配最后一个子元素
        console.log($('div:last-child'));
        /*
        0: div#d3
        1: div#child
        */
        
        // 是匹配作为第index个的子元素,但index是表示第几个,所以是从1开始的
        console.log($('div:nth-child(1)'));
        /*
        0: div#fu
        1: div#d1
        2: div#child
        */
        
        //如元素是父元素中唯一的子元素,就会被匹配
        // 如父元素中含有其他元素,将不被匹配
        console.log($('div:only-child'));
        /*
        0s: div#child
        */
        // console.log($('boby>div'));
    </script>
</body>

表单对象属性过滤选择器

  1. :enabled过滤选择器
  2. :disabled过滤选择器
  3. :checked过滤选择器
  4. :selected过滤选择器

描述:

选择器 描述
:enabled过滤选择器 匹配所有可以使用元素
:disabled过滤选择器 匹配所有不可以使用元素
:checked过滤选择器 匹配所有选中的被选中元素(复选框、单选框等)
:selected过滤选择器 匹配所有选中的<option>元素
<body>
<form action="#">
    <input type="text" disabled>
    <input type="checkbox">html
    <input type="checkbox" checked>css
    <select>
        <option>北京</option>
        <option selected>石家庄</option>
        <option>衡水</option>
    </select>
</form> 
<script>
    //匹配input下的disabled元素
    console.log($('input:disabled'));
    /*
    0: input
    */
    console.log($('input:checked'));
    /*
    0: input
    */
    console.log($('option:selected'));
    /*
    0: input
    */
</script> 

表单选择器

选择器 描述
:input 选择器 匹配所有 inputtextareaselectbutton 元素
:text 选择器 匹配所有的单行文本框
:password 选择器 匹配所有密码框
:radio 选择器 匹配所有单选按钮
:checkbox 选择器 匹配所有复选框
:submit 选择器 匹配所有提交按钮
:image 选择器 匹配所有图像域
:reset 选择器 匹配所有重置按钮
:button 选择器 匹配所有按钮
:file选择器 匹配所有文件域

click() 方法

当单击元素时,发生 click 事件。

click() 方法触发 click 事件,或规定当发生 click 事件时运行的函数。

$(selector).click()     // 触发时
$(selector).click(function)尝试	//添加时