22-day21_JQuery 高级

## 今日内容:

    1. JQuery 高级

        1. 动画

        2. 遍历

        3. 事件绑定

        4. 案例

        5. 插件

 

 

 

 

## JQuery 高级

    1. 动画

        1. 三种方式显示和隐藏元素

            1. 默认显示和隐藏方式

                1. show([speed,[easing],[fn]])

                    1. 参数:

                        1. speed:动画的速度。三个预定义的值("slow","normal", "fast")或表示动画时长的毫秒数值(如:1000)

                        2. easing:用来指定切换效果,默认是"swing",可用参数"linear"

                            * swing:动画执行时效果是 先慢,中间快,最后又慢

                            * linear:动画执行时速度是匀速的

                        3. fn:在动画完成时执行的函数,每个元素执行一次。

 

                2. hide([speed,[easing],[fn]])

                3. toggle([speed],[easing],[fn])

            

            2. 滑动显示和隐藏方式

                1. slideDown([speed],[easing],[fn])

                2. slideUp([speed,[easing],[fn]])

                3. slideToggle([speed],[easing],[fn])

 

            3. 淡入淡出显示和隐藏方式

                1. fadeIn([speed],[easing],[fn])

                2. fadeOut([speed],[easing],[fn])

                3. fadeToggle([speed,[easing],[fn]])

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Insert title here</title>

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

    <script>

        //1.默认显示和隐藏方式

        // //隐藏div

        // function hideFn(){

        //     // $("#showDiv").hide("slow","swing",function(){

        //     //    alert("隐藏了");

        //     // });

        //     //慢速

        //     // $("#showDiv").hide("slow","swing");

        //     //快速

        //     // $("#showDiv").hide("fast","swing");

        //     //按时间

        //     //默认方式

        //     $("#showDiv").hide("5000","swing");

        // }

        // //显示div

        // function showFn(){

        //     // $("#showDiv").show("slow","swing",function(){

        //     //     alert("显示了");

        //     // });

        //     //慢速

        //     // $("#showDiv").show("slow","swing");

        //     //快速

        //     // $("#showDiv").show("fast","swing");

        //     //按时间

        //     //默认方式

        //     $("#showDiv").show("5000","swing");

        // }

        // //按钮切换显示div的显示隐藏

        // function toggleFn(){

        //     //默认方式

        //     $("#showDiv").toggle("slow");

        // }

        //2.滑动显示和隐藏方式

        //隐藏div

        // function hideFn(){

        //     $("#showDiv").slideDown("slow");

        // }

        // //显示div

        // function showFn(){

        //     $("#showDiv").slideUp("slow");

        // }

        // //按钮切换显示div的显示隐藏

        // function toggleFn(){

        //     $("#showDiv").slideToggle("slow");

        // }

 

 

        //3.淡入淡出显示和隐藏方式

        //隐藏div

        function hideFn(){

            $("#showDiv").fadeOut("slow");

        }

        //显示div

        function showFn(){

            $("#showDiv").fadeIn("slow");

        }

        //按钮切换显示div的显示隐藏

        function toggleFn(){

            $("#showDiv").fadeToggle("slow");

        }

    </script>

</head>

<body>

<input type="button" value="点击按钮隐藏div" οnclick="hideFn()">

<input type="button" value="点击按钮显示div" οnclick="showFn()">

<input type="button" value="点击按钮切换div显示和隐藏" οnclick="toggleFn()">

 

 

<div id="showDiv" style="width:300px;height:300px;background:pink">

    div显示和隐藏

</div>

</body>

</html>

 

    2. 遍历

        1. js的遍历方式

            * for(初始化值;循环结束条件;步长)

            *for(var i=1;i<10;i++)

        2. jq的遍历方式

            1. jq对象.each(callback)

                1. 语法:

                    jquery对象.each(function(index,element){});

                        * index:就是元素在集合中的索引

                        * element:就是集合中的每一个元素对象

 

                        * this:集合中的每一个元素对象

                2. 回调函数返回值:

                    * true:如果当前function返回为false,则结束循环(break)。

                    * false:如果当前function返回为true,则结束本次循环,继续下次循环(continue)

            2. $.each(object, [callback])

            3. for..of: jquery 3.0 版本之后提供的方式

                for(元素对象 of 容器对象)

        

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        /*1. jq对象.each(callback)

                1. 语法:

                    jquery对象.each(function(index,element){});

                        * index:就是元素在集合中的索引

                        * element:就是集合中的每一个元素对象

 

 

                        * this:集合中的每一个元素对象

                2. 回调函数返回值:

                    * true:如果当前function返回为false,则结束循环(break)。

                    * false:如果当前function返回为true,则结束本次循环,继续下次循环(continue)

            2. $.each(object, [callback])

            3. for..of: jquery 3.0 版本之后提供的方式

 

 

         */

        //入口函数

        $(function(){

            // //一,使用js方式循环遍历

            // //1.获取所有的ul下的li

            // var city = $("#city li");

            // //2.遍历li

            // for( var i=0;i<city.length;i++){

            //     if("上海"==city[i].innerHTML){

            //         //break;

            //         continue;//如果city[i]等于上海,跳过本次循环,执行下次循环

            //     }

            //     //3.获取内容

            //     alert(i+":"+city[i].innerHTML);

            // }

 

 

            // //--------------

            // //二,使用jquery对象.each(callback);方式遍历

            // //1.获取所有的ul下的li

            // var citys = $("#city li");

            // citys.each(function(index,element){

            //     // //2.获取li对象,第一种方式,this

            //     // alert(this.innerHTML);

            //     // alert($(this).html);

            //     //2.2获取li对象,第二种方式,在回调函数中定义参数  index:(索引)  element(元素对象)

            //     //如果city[i]等于上海,跳过本次循环,执行下次循环

            //     if("上海"==$(element).html()){

            //         //如果当前function返回值为false,则结束循环(break)

            //         //如果返回为true,则结束本次循环,据需下次循环(continue)

            //         return false;

            //     }

            //     // alert(index+":"+element.innerHTML);

            //     alert(index+":"+$(element).html());

            // });

 

 

            // //--------------

            //三

            // var citys = $("#city li");

            // $.each(citys,function(){

            //     alert($(this).html());

            // });

 

 

 

 

            //--------------

            //四

            var citys = $("#city li");

            for(li of citys){

                alert($(li).html());

            };

 

 

        });

 

 

    </script>

</head>

<body>

<ul id="city">

    <li>北京</li>

    <li>上海</li>

    <li>天津</li>

    <li>重庆</li>

</ul>

</body>

</html>

 

 

    3. 事件绑定

        1. jquery标准的绑定方式

            * jq对象.事件方法(回调函数);

            * 注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为。

                * 表单对象.submit();//让表单提交

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        // //入口函数

        $(function(){

        //     //1.获取name对象,绑定click事件

        //     $("#name").click(function(){

        //         //2.弹出

        //         alert("我被点击了");

        //     });

        //

        //     //给name绑定鼠标移入和移出事件

        //     $("#name").mouseover(function(){

        //         alert("鼠标来了")

        //     });

        //     $("#name").mouseout(function(){

        //         alert("鼠标走了")

        //     });

 

 

                // //简化操作,链式编程

                // $("#name").mouseover(function() {

                //     alert("鼠标来了")

                // }).mouseout(function(){

                //     alert("鼠标走了");

                // });

                //

                //

                // alert("我要获得焦点了");

                // $("#name").focus();//让文本输入框获得焦点

 

 

            //表单提交

            

        });

 

 

    </script>

</head>

<body>

<input id="name" type="text" value="绑定点击事件">

</body>

</html>

        2. on绑定事件/off解除绑定

            * jq对象.on("事件名称",回调函数)

            * jq对象.off("事件名称")

                * 如果off方法不传递任何参数,则将组件上的所有事件全部解绑

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        //入口函数

        $(function(){

           //1.使用on给按钮绑定单击事件 click

            $("#btn").on("click",function(){

                alert("我被点击了");

            });

            //2.使用off解除btn的单击事件

            $("#btn2").click(function(){

                //解除btn按钮的单击事件

                $("#btn").off("click");

                // $("#btn").off();//将组建上的全部事件解除

            });

 

 

        });

 

 

    </script>

</head>

<body>

<input id="btn" type="button" value="使用on绑定点击事件">

<input id="btn2" type="button" value="使用off解绑点击事件">

</body>

</html>

        3. 事件切换:toggle

            * jq对象.toggle(fn1,fn2...)

                * 当单击jq对象对应的组件后,会执行fn1.第二次点击会执行fn2.....

                

            * 注意:1.9版本 .toggle() 方法删除,jQuery Migrate(迁移)插件可以恢复此功能。

                 <script src="../js/jquery-migrate-1.0.0.js" type="text/javascript" charset="utf-8"></script>

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title></title>

    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    <script src="../js/jquery-migrate-1.0.0.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        //入口函数

        $(function(){

            //获取按钮,调用toggle方法

            $("#btn").toggle(function(){

                //改变div背景色为backgroundColor颜色为green绿色

                $("#myDiv").css("backgroundColor","green");

            },function(){

                //改变div背景色为backgroundColor颜色为pink红色

                $("#myDiv").css("backgroundColor","pink");

            });

        });

    </script>

</head>

<body>

    <input id="btn" type="button" value="事件切换">

    <div id="myDiv" style="width:300px;height:300px;background:pink">

        点击按钮变成绿色,再次点击红色

    </div>

</body>

</html>

 

    4. 案例

        1. 广告显示和隐藏

            <!DOCTYPE html>

            <html>

            <head>

                <meta charset="UTF-8">

                <title>广告的自动显示与隐藏</title>

                <style>

                    #content{width:100%;height:500px;background:#999}

                </style>

            

                <!--引入jquery-->

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

                <script>

                    /*

                        需求:

                            1. 当页面加载完,3秒后。自动显示广告

                            2. 广告显示5秒后,自动消失。

            

                        分析:

                            1. 使用定时器来完成。setTimeout (执行一次定时器)

                            2. 分析发现JQuery的显示和隐藏动画效果其实就是控制display

                            3. 使用  show/hide方法来完成广告的显示

  

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>广告的自动显示与隐藏</title>

    <style>

        #content{width:100%;height:500px;background:#999}

    </style>

    <!--引入jquery-->

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

    <script>

        /*

                      需求:

                          1. 当页面加载完,3秒后。自动显示广告

                          2. 广告显示5秒后,自动消失。

 

 

                      分析:

                          1. 使用定时器来完成。setTimeout (执行一次定时器)

                          2. 分析发现JQuery的显示和隐藏动画效果其实就是控制display

                          3. 使用  show/hide方法来完成广告的显示

                   */

        //入口函数  //在页面加载完毕后,定义定时器,调用这两个方法

        $(function(){

        //定义定时器,调用show方法,三秒后执行一次

            setTimeout(adShow,3000);

            //五秒后执行隐藏方法

            setTimeout(adHide,8000);

        });

           //显示广告

           function adShow(){

               //获取广告的div.调用show显示方法

               $("#ad").show("slow");

           }

            //隐藏广告

            function adHide(){

                //获取广告的div.调用hide显示方法

                $("#ad").hide("slow");

            }

 

 

    </script>

</head>

<body>

<!-- 整体的DIV -->

<div>

    <!-- 广告DIV -->

    <div id="ad" style="display: none;">

        <img style="width:100%" src="../img/adv.jpg" />

    </div>

 

 

    <!-- 下方正文部分 -->

    <div id="content">

        正文部分

    </div>

</div>

</body>

</html>

 

 

    

 

 

        2. 抽奖

           

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>jquery案例之抽奖</title>

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

    <script>

        /*

                      分析:

                          1. 给开始按钮绑定单击事件

                              1.1 定义循环定时器

                              1.2 切换小相框的src属性

                                  * 定义数组,存放图片资源路径

                                  * 生成随机数。数组索引

 

 

 

 

                          2. 给结束按钮绑定单击事件

                              1.1 停止定时器

                              1.2 给大相框设置src属性

 

 

                   */

        //定义数组,存放图片路径

        //准备一个一维数组,装用户的像片路径

        var imgs = [

            "../img/man00.jpg",

            "../img/man01.jpg",

            "../img/man02.jpg",

            "../img/man03.jpg",

            "../img/man04.jpg",

            "../img/man05.jpg",

            "../img/man06.jpg"

        ];

        var startId;//开始定时器id

        var index;//图片随机索引角标

        //定义入口函数

        $(function(){

            //处理按钮是否使用效果

            $("#startID").prop("disabled",false);

            $("#stopID").prop("disabled",true);

           //1.获取开始按钮绑定单击事件

           $("#startID").click(function(){

                //定义循环定时器,20毫秒执行一次

                startId=  setInterval(function(){

                    //处理按钮是否使用效果

                    $("#startID").prop("disabled",true);

                    $("#stopID").prop("disabled",false);

                    //生成随机角标0-6

                       index=Math.floor(Math.random() * 7);

                    //设置小相框的src属性

                       $("#img1ID").prop("src",imgs[index]);

 

 

               },20);

           }) ;

           //2.获取结束按钮绑定单击事件

            $("#stopID").click(function(){

                //处理按钮是否使用效果

                $("#startID").prop("disabled",false);

                $("#stopID").prop("disabled",true);

                //1.1停止定时器

                    clearInterval(startId);

                //1.2.给大相框设置src

                    $("#img2ID").prop("src",imgs[index]).hide();

                //动画显示效果,1秒之后显示

                $("#img2ID").show(1000);

            });

        });

    </script>

</head>

<body>

 

 

<!-- 小像框 -->

<div style="border-style:dotted;width:160px;height:100px">

    <img id="img1ID" src="../img/man00.jpg" style="width:160px;height:100px"/>

</div>

 

 

<!-- 大像框 -->

<div

        style="border-style:double;width:800px;height:500px;position:absolute;left:500px;top:10px">

    <img id="img2ID" src="../img/man00.jpg" width="800px" height="500px"/>

</div>

 

 

<!-- 开始按钮 -->

<input

        id="startID"

        type="button"

        value="点击开始"

        style="width:150px;height:150px;font-size:22px"

        οnclick="imgStart()">

 

 

<!-- 停止按钮 -->

<input

        id="stopID"

        type="button"

        value="点击停止"

        style="width:150px;height:150px;font-size:22px"

        οnclick="imgStop()">

 

 

 

 

<!--<script language='javascript' type='text/javascript'>-->

<!--    //准备一个一维数组,装用户的像片路径-->

<!--    var imgs = [-->

<!--        "../img/man00.jpg",-->

<!--        "../img/man01.jpg",-->

<!--        "../img/man02.jpg",-->

<!--        "../img/man03.jpg",-->

<!--        "../img/man04.jpg",-->

<!--        "../img/man05.jpg",-->

<!--        "../img/man06.jpg"-->

<!--    ];-->

 

 

<!--</script>-->

</body>

</html>

 

 

 

    5. 插件:增强JQuery的功能

        1. 实现方式:

            1. $.fn.extend(object) 

                * 增强通过Jquery获取的对象的功能  $("#id")

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>01-jQuery对象进行方法扩展</title>

    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        //使用jquery插件,给jq对象添加2个方法  check()选中所有复选框  uncheck()取消选中复选框

 

 

        //1.定义jquery插件

        $.fn.extend({

            //定义了一个check方法,所有的jq对象都可以调用该方法

            check:function(){

                // alert("123");

                //让复选框选中

                //this:调用该方法的jq对象

                this.prop("checked",true);

            },

            uncheck:function(){

                //让复选框不选中

                this.prop("checked",false);

            }

        });

 

 

        //入口函数

        $(function(){

            //1.获取按钮

            // $("#btn-check").check();

            //复选框对象.check();

            $("#btn-check").click(function(){

                //获取复选框对象

                $("input[type='checkbox']").check();

            })

            $("#btn-uncheck").click(function(){

                //获取复选框对象

                $("input[type='checkbox']").uncheck();

            })

        });

    </script>

</head>

<body>

<input id="btn-check" type="button" value="点击选中复选框" οnclick="checkFn()">

<input id="btn-uncheck" type="button" value="点击取消复选框选中" οnclick="uncheckFn()">

<br/>

<input type="checkbox" value="football">足球

<input type="checkbox" value="basketball">篮球

<input type="checkbox" value="volleyball">排球

 

 

</body>

</html>

 

 

            2. $.extend(object)

                * 增强JQeury对象自身的功能  $/jQuery

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>01-jQuery对象进行方法扩展</title>

    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

        //对全局方法扩展2个方法,扩展min方法:求2个值的最小值;扩展max方法:求2个值最大值

        $.extend({

            max:function(a,b){

                //返回两数中的较大值

                return a>=b?a:b;

            },

            min:function(a,b){

                //返回两个数的较小值

                return a<=b?a:b;

            }

        });

        //调用全局方法

        var max = $.max(2,3);

        alert(max);

        var min=$.min(3,5);

        alert(min);

    </script>

</head>

<body>

</body>

</html>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值