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

了解一下什么是选择器

匹配对应的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)尝试	//添加时
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值