zoukankan      html  css  js  c++  java
  • jquery 选择器、筛选器、事件绑定与事件委派

    一、jQuery简介

      1、可用的jQuery服务器网站:https://www.bootcdn.cn/

       jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理
    HTMLdocuments、events、实现动画效果,并且方便地为网站提供AJAX交互。

       jQuery的引入

        <script src='jquery 3.3.1.js'></script>//引入jQuery代码(模块)
        <script type="text/javascript">
    
            //写自己的js或者jquery代码
            
        </script>

    二、jQuery与dom对象的关系

    (1)jQuery是dom对象的集合;
    (2)jQuery和dom对象的方法和属性是隔离的,不能瞎用;
    (3)$ <==>jQuery;等价的
    两者之间的转换关系
    $('选择器')[索引]  ---->  dom对象
    $('dom对象')      ---->  jquery对象

    三、选择器

      1、基础选择器

    $("*")  $("#id")   $(".class")  $("element")  $(".class,p,div")

      

      2、层级选择器(>:儿子选择器;+:毗邻选择器;~:弟弟选择器)

    $(".outer div")  $(".outer>div")   $(".outer+div")  $(".outer~div")

      3、基本筛选器(even:偶数;odd:奇数;lg:小于)

    $("li:first")  $("li:eq(2)")  $("li:even") $("li:gt(1)")

      4、属性选择器

    基本语法:$("[属性1][属性2]...")
    $('[id="div1"]')   $('["alex="sb"][id]')

      5、表单选择器

    $("[type='text']")----->$(":text")         注意只适用于input标签  :
    $("input:checked")

      6、表单属性选择器

        :enabled
        :disabled
        :checked
        :selected
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery</title>
    </head>
    <body>
        <div class="c1" id="i1">DIV</div>
    
        <div class="c2">
            <p class="c4">111</p>
            <a href="">click</a>
        </div>
        <div class="p1">
             <p class="c3" id="i3">222</p>
             <p class="c3">333</p>
             <p class="c3" id="i2">444</p>
             <div>
                 <p>孙子</p>
             </div>
             <p class="c3">555</p>
             <p class="c3 c8">666</p>
             <p class="c3">777</p>
             <p class="c3">888</p>
        </div>
    
        <div alex="123" peiqi="678">alex和配齐</div>
        <div alex="123">alex</div>
        <div alex="234">egon</div>
        <div peiqi="678">8888</div>
        <div class="c5">
            <input type="checkbox" name='in' value='456'>111
            <input type="checkbox" name='in' checked="checked">222
            <input type="checkbox" name='in'>333
        </div>
        <select>
          <option value="1">Flowers</option>
          <option value="2" selected="selected">Gardens</option>
          <option value="3" selected="selected">Trees</option>
         </select>
    
        <hr>
    
        <div class="c6" yuan="123">123</div>
        <div class="c7" yuan="234">234</div>
    
    
        <div class="c9">
            <p>111</p>
            <p>222</p>
            <div class="c10">
                <p>333</p>
            </div>
            <a href="">click</a>
        </div>
        
    
    
    
        <script src='jquery 3.3.1.js'></script>//引入jQuery代码(模块)
        <script type="text/javascript">
            //写自己的js或者jquery代码
            // 基本选择器      
            // $('*').css('color','red');//通用选择器,选择所有
            // $('p').css('color','green');//元素选择器
            // $('#i1').css('color','red');//ID选择器
            // $('.c3').css('color','red');//类选择器
            
            //层级选择器
            // $('.p1 p').css('color','red');//子孙选择器
            // $('.p1>p').css('color','red');//儿子选择器
            // $('.c8+p').css('color','red');//毗邻选择器,只选择挨着的第一个指定标签
            // $('.c8~p').css('color','red');//弟弟选择器
    
            //基本筛选器
            // $('.p1 p:eq(3)').css('color','red');//选择索引为3的那个标签,返回值为dom对象
            // $('.p1 p:first').css('color','red');//第一个
            // $('.p1 p:last').css('color','red');//最后一个
            // $('.p1 p:even').css('color','red'); //偶数
            // $('.p1 p:lt(2)').css('color','red'); //小于
            // $('.p1 p:gt(2)').css('color','red'); //大于
    
            // 属性选择器
            // $('[alex]').css('color','red'); //属性名查找
            // $('[alex="123"]').css('color','red');//key=value查找
            // $("[alex='123'][peiqi='678']").css('color','red');//注意引号区分,多属性之间用[]区分,属性之间不能用空格
    
    
            //表单选择器
            // $(':checkbox');//获取到复选框的输入标签jquery对象
            // $('[type="checkbox"]');
    
        </script>
    </body>
    </html>
    选择器演示示例代码

      注意:jquery下载好,并加载好,再交给浏览器解析.

    四、筛选器进阶

      1、取文本方法

    取值------------------------------------------------------------------
    $('选择器')eq(2).html(); 获取第二个元素内部的html文本(包含标签);
    $('选择器')eq(2).text();只获取第二个元素中的文本内容;
    赋值------------------------------------------------------------------
    $('选择器')eq(2).html('值'); html文本形式替换标签中的内容;
    $('选择器')eq(2).text('值'); 字符串形式替换内容;

       

      2、过滤筛选器

    $("li").eq(2)  //选择第二个元素
    $("li").first()  //获取到第一个元素
    $("ul li").hasclass("test") //判断是否有class='test'属性,按照or判断,有就返回True
    $(".c3:"+"eq("+index+")") ;
        1、结果是一个dom对象;
        2、需要做字符串的拼接;
        如:var index=3;
           $(".c3:"+"eq("+index+")").css("color","red"); 
    
    $(".c3").eq(index)
         1、结果是一个$对象;
         2、不需要拼接,比较好用;
         如:var index=3;
           $(".c3").eq(index).css("color","red");
    $(' :eq(index)')与$(' ').eq(indext)对比

     

      3、查找选择器(导航选择器)

            // 子--子孙
            // $('.c9').children('p').css('color','red');//找所有的儿子里面的p标签
            // $('.c9').find('p').css('color','red');//找子孙后代所有的p标签
            // $(".p1").children(":first").css("color","red");
            //$(".p1").children().first().css("color","red");
            //兄弟(next)
            // $('#i2').next().css('color','red');//找i2下一个兄弟标签        
             // $('#i2').nextAll().css('color','red');//找i2下面所有的兄弟标签
             // $('#i2').nextUntil('.c8').css('color','red');//选择直到.c8位置的兄弟标签,去头去尾取中间
            //兄弟(prev)
            // $('#i2').prev().css('color','red');//找i2先前的一个兄弟标签     
            // $('#i2').prevAll().css('color','red');//找i2先前所有的兄弟标签
            // $('#i2').prevUntil('#i3').css('color','red');//选择直到#i3位置的兄弟标签,去头去尾
    
            //父亲(parent)        
            // $('#i2').parent().css('color','red');//找i2的父亲标签
            //$('#i2').parents('可以给定条件').css('color','red');//找i2的祖先标签
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>jquery</title>
    </head>
    <body>
        <div class="c1" id="i1">DIV</div>
    
        <div class="c2">
            <p class="c4">111</p>
            <a href="">click</a>
        </div>
        <div class="p1">
             <p class="c3" id="i3">222</p>
             <p class="c3">333</p>
             <p class="c3" id="i2">444</p>
             <div>
                 <p>孙子</p>
             </div>
             <p class="c3">555</p>
             <p class="c3 c8">666</p>
             <p class="c3">777</p>
             <p class="c3">888</p>
        </div>
    
        <div alex="123" peiqi="678">alex和配齐</div>
        <div alex="123">alex</div>
        <div alex="234">egon</div>
        <div peiqi="678">8888</div>
        <div class="c5">
            <input type="checkbox" name='in' value='456'>111
            <input type="checkbox" name='in' checked="checked">222
            <input type="checkbox" name='in'>333
        </div>
        <select>
          <option value="1">Flowers</option>
          <option value="2" selected="selected">Gardens</option>
          <option value="3" selected="selected">Trees</option>
         </select>
    
        <hr>
    
        <div class="c6" yuan="123">123</div>
        <div class="c7" yuan="234">234</div>
    
    
        <div class="c9">
            <p>111</p>
            <p>222</p>
            <div class="c10">
                <p>333</p>
            </div>
            <a href="">click</a>
        </div>
        
    
    
    
        <script src='jquery 3.3.1.js'></script>//引入jQuery代码(模块)
        <script type="text/javascript">
            //写自己的js或者jquery代码
            // 基本选择器      
            // $('*').css('color','red');//通用选择器,选择所有
            // $('p').css('color','green');//元素选择器
            // $('#i1').css('color','red');//ID选择器
            // $('.c3').css('color','red');//类选择器
            
            //层级选择器
            // $('.p1 p').css('color','red');//子孙选择器
            // $('.p1>p').css('color','red');//儿子选择器
            // $('.c8+p').css('color','red');//毗邻选择器,只选择挨着的第一个指定标签
            // $('.c8~p').css('color','red');//弟弟选择器
    
            //基本筛选器
            // $('.p1 p:eq(3)').css('color','red');//选择索引为3的那个标签,返回值为dom对象
            // $('.p1 p:first').css('color','red');//第一个
            // $('.p1 p:last').css('color','red');//最后一个
            // $('.p1 p:even').css('color','red'); //偶数
            // $('.p1 p:lt(2)').css('color','red'); //小于
            // $('.p1 p:gt(2)').css('color','red'); //大于
    
            // 属性选择器
            // $('[alex]').css('color','red'); //属性名查找
            // $('[alex="123"]').css('color','red');//key=value查找
            // $("[alex='123'][peiqi='678']").css('color','red');//注意引号区分,多属性之间用[]区分,属性之间不能用空格
    
    
            //表单选择器
            // $(':checkbox');//获取到复选框的输入标签jquery对象
            // $('[type="checkbox"]');
    
    
            // 筛选器进阶
            // $(".p1 p").eq(1);//获取到的结果依旧是一个jquery对象
            // $(".p1 p").eq(1).text(); 
            // $('.p1 p').ep(2).html();
    
            // 以下较为麻烦,需要做字符串的拼接
            // var index=3;
            // $(".c3:"+"eq("+index+")").css("color","red"); 
            // $(".c3").eq(index).css("color","red");
            // console.log($('.c8').hasclass('t1'));//是否存在class='t1',如果存在返回True;
    
            // 导航查找
            // 子--子孙
            // $('.c9').children('p').css('color','red');//找所有的儿子里面的p标签
            // $('.c9').find('p').css('color','red');//找子孙后代所有的p标签
            // $(".p1").children(":first").css("color","red");
            //$(".p1").children().first().css("color","red");
            //兄弟(next)
            // $('#i2').next().css('color','red');//找i2下一个兄弟标签        
             // $('#i2').nextAll().css('color','red');//找i2下面所有的兄弟标签
             // $('#i2').nextUntil('.c8').css('color','red');//选择直到.c8位置的兄弟标签,去头去尾取中间
            //兄弟(prev)
            // $('#i2').prev().css('color','red');//找i2先前的一个兄弟标签     
            // $('#i2').prevAll().css('color','red');//找i2先前所有的兄弟标签
            // $('#i2').prevUntil('#i3').css('color','red');//选择直到#i3位置的兄弟标签,去头去尾
    
            //父亲(parent)        
            // $('#i2').parent().css('color','red');//找i2的父亲标签
            //$('#i2').parents('可以给定条件').css('color','red');//找i2的祖先标签
    
        </script>
    </body>
    </html>
    属性操作与选择器演示代码

    五、事件绑定

    绑定事件的语法:
    $('选择器 ').事件(function()
    { 执行的代码; })
    注意:内部的this是dom对象;
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加一个元素</title>
    </head>
    <body>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
        </ul>
        <button >点击添加</button>
        <script src='jquery 3.3.1.js'></script>
        <script type="text/javascript">
    
            //给button添加点击事件
            $('button').click(function (){
                $('ul').append('<li>444</li>');
            })
            //给li标签添加点击事件
            $('li').click(function(){
                //内部的this是一个dom对象            
                alert($(this).text());
            })
        </script>
    
    </body>
    
    </html>
    low版事件绑定示例

      注意:我们这个绑定的示例,新增添的<li>444</li>标签没有点击事件,这不是我们想要的,所以我们需要学习高级一点的绑定事件,事件绑定+事件委派;

    六、事件绑定与委派(推荐使用此方法绑定事件)

    绑定事件+委派的语法:
    父项$.on('事件','需要委派的标签',function()
    {
        执行的代码;
    })
    注意:内部的this是dom对象;
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>添加一个元素</title>
    </head>
    <body>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
        </ul>
        <button >点击添加</button>
        <script src='jquery 3.3.1.js'></script>
        <script type="text/javascript">
    
            //给button添加点击事件
            $('button').click(function (){
                $('ul').append('<li>444</li>');
            })
            //通过父项绑定事件并委派事件
            $('ul').on('click','li',function(){
                //内部的this是一个dom对象            
                alert($(this).text());
            })
    
        </script>
    
    </body>
    
    </html>
    升级版事件绑定示例

    七、属性操作(补充)

            1 文本操作
                  $("").html()
                  $("").text()
                  $("").html("参数")
                  $("").text("参数")
            2 属性操作
                  $().attr("")
                  $().attr("","")
                  $("p").attr("alex")
                  $("p").attr("alex","dsb")
                  $("p").removeAttr("class")
    
            3 class  操作
                  $("p").addClass("c1")
                  $("p").removeClass("c1")

    八、实例补充

    $(function(){
          jquery代码
        
    })  
    
    代码先把文档所有的内容加载完;
    再执行  $( )  括号里面的代码
    jquery的链式结构:表示的是当jquery调用方法时,代码的返回值还是当前的jquery对象;
    
     $(this).next().removeClass("hide");
    该代码返回值是$(this).next();
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>左侧栏</title>
        <style type="text/css">
            body{
                margin:0;
                padding: 0;
            }
            ul{
                margin: 0;
            }
            aside{
                width: 20%;
                height: 800px;
                background-color: #BFA372FF;
            }
            button{
                display: inline-block;
                height: 50px;
                width:100%;
                line-height: 50px;
                background-color: #29C2D0FF;
                color:white;
                font-size: 20px;
                text-align: center;
                margin-top:2px;
    
            }
            .hide{
                display:none;
            }
        </style>
        <script src='jquery 3.3.1.js'></script>
        <script type="text/javascript">
            $( function(){
                $('button').on('click',function(){
                $(this).next().removeClass('hide');
                $(this).parent().siblings().children('aside .nav').addClass('hide');
                })    
    
            })
        
        </script>
    </head>
    <body>
        <aside>
            <div>
                <button class='title'>第一章</button>
                <ul class='nav hide'>
                    <li>111</li>
                    <li>111</li>
                    <li>111</li>
                </ul>
            </div>
            <div>
                <button class='title'>第二章</button>
                <ul class='nav hide'>
                    <li>222</li>
                    <li>222</li>
                    <li>222</li>
                </ul>
            </div>
            <div>
                <button class='title'>第三章</button>
                <ul class='nav hide'>
                    <li>333</li>
                    <li>333</li>
                    <li>333</li>
                </ul>
            </div>
        </aside>
        
    
        
    </body>
    </html>
    左侧菜单栏jquery实例
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>导航图</title>
        <style type="text/css">
            div{
                margin-top: 15px;
                width:600px;
                height: 200px;
                line-height: 200px;
                background-color: #32A6CCFF;
                text-align:center;
            
            }
            ul{
                margin: 0;
                padding: 0;
                font-size: 0;
    
            }
            ul li{
                display: inline-block;
                line-height: 200px;
                font-size: 38px;
                text-align: center;
                width: 200px;
            }
            .c1{
                background-color: #A662D2FF;
            }
            .hide{
                display:none;
            }
        </style>
        <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
        <script type="text/javascript">
    
            $(function(){
                $('li').on('click',function(){
                    $(this).css('color','white');
                    $(this).css('background-color','#E95469FF');
                    $(this).siblings().css('background-color',' #32A6CCFF');
                    $(this).siblings().css('color','black');
    
                    // alert($(this).val());
                    let value=$(this).val()
                    let dis_arr=$(this).parents().parent().siblings();
                    dis_arr.addClass('hide');
                    dis_arr.eq(value).removeClass('hide');
    
                })
            })
        </script>
    </head>
    <body>
        <div>
            <ul>
                <li class='nav' value="1">第一章</li>
                <li class='nav' value="2">第二章</li>
                <li class='nav' value='3'>第三章</li>
            </ul>
        </div>
        <div class='hide c1'><h1>123</h1></div>
        <div class='hide c1'><h1>456</h1></div>
        <div class='hide c1'><h1>789</h1></div>
    
    </body>
    </html>
    tab表单切换jQuery实现
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    
         <button>全选</button>
         <button>取消</button>
         <button>反选</button>
         <hr>
         <table border="1">
             <tr>
                 <td><input type="checkbox"></td>
                 <td>111</td>
                 <td>111</td>
                 <td>111</td>
                 <td>111</td>
             </tr>
             <tr>
                 <td><input type="checkbox"></td>
                 <td>222</td>
                 <td>222</td>
                 <td>222</td>
                 <td>222</td>
             </tr>
             <tr>
                 <td><input type="checkbox"></td>
                 <td>333</td>
                 <td>333</td>
                 <td>333</td>
                 <td>333</td>
             </tr>
             <tr>
                 <td><input type="checkbox"></td>
                 <td>444</td>
                 <td>444</td>
                 <td>444</td>
                 <td>444</td>
             </tr>
         </table>
    
    
    
    
    
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
        <script>
            $('button').on('click',function(){
                switch($(this).text()){
                    case '全选':
                        $('[type="checkbox"]').prop('checked','checked');
                        break;
                    case '取消':
                        $('[type="checkbox"]').prop('checked',false);
                        break;
                    case '反选':
                        $("table :checkbox").each(function(){
                         $(this).prop("checked",!$(this).prop("checked"));
                     })
                        break;
                    default:console.log(123);
                        break;
                   
                }
            })
        
         
    
                // $("button").click(function(){
    
                //    if($(this).text()=="全选"){    // $(this)代指当前点击标签
    
                //        $("table :checkbox").prop("checked",true)
                //    }
                //     else if($(this).text()=="取消"){
                //        $("table :checkbox").prop("checked",false)
                //    }
                //     else {
                //        $("table :checkbox").each(function(){
    
                //          $(this).prop("checked",!$(this).prop("checked"));
    
                //      });
                //    }
    
    
    
                // });
    
        </script>
    </body>
    </html>
    table反选操作prop的使用
  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/10179473.html
Copyright © 2011-2022 走看看