Java学习(JQuery高级(动画,遍历,事件绑定,插件:增强JQuery的功能),案例(广告显示与隐藏,抽奖案例))

2022/3/24

一、JQuery高级
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]]):隐藏时显示,显示时隐藏

<script type="text/javascript">
       //显示div
       function showFn(){
        $("#showDiv").show("slow","swing","function(){
            alert("显示了");
        });
       }
       //隐藏div
       function hideFn(){
        $("#showDiv").hide("slow","swing","function(){
            alert("隐藏了");
        });
       }
       //切换显示和隐藏div
        function toggleFn(){
        $("#showDiv").toggle("slow");
       }
    </script>

2.滑动显示和隐藏方式
        1.slideDown([speed],[easing],[fn]):向下滑显示
        2.slideUp([speed],[easing],[fn]):向上滑隐藏
        2.slideToggle([speed],[easing],[fn]):显示隐藏切换
3.淡入淡出显示和隐藏方式
        1.fadeIn([speed],[easing],[fn]):淡入显示
        2.fadeOut([speed,[easing],[fn]):淡出异常
        3.faseToggle([speed,[easing],[fn]):淡入淡出切换

 2.遍历

1.JS的遍历方式
        * for(初始化值;循环结束条件;步长)
2.jq的遍历方式
        1.jq对象.each(callback)
        2.$.each(object,[callback])
        3.for...of
callback:就是一个回调函数,里面传递function对象

<script type="text/javascript">
        $(function(){
            //1.获取素有的ul下的li
            var city1 = $("#city li");

            //js的遍历方式
            //2.遍历li
            <!--for(var i = 0; i<city1.length;i++){
                if("上海" == city1[i].innerHTML){
                    break; //结束循环
                    //continue 结束本次循环,继续下次循环
                }
                //获取内容
                alert(i+":"+city1[i].innerHTML)
            }-->

            //2.jq对象.each(callback)
            <!--city1.each(function(){
                //3.1获取li对象 第一种方式this
                <!--alert(this.innerHTML);-->
                alert($(this).html());
            });-->
            <!--city1.each(function(index,element){
                //3.2获取li对象 第二种方式 在回调函数中定义参数 index (索引) element(元素对象)
                alert(index+":"+element.innerHTML);

                //判断如果是上海,则结束循环
                if("上海"==$(element).html()){
                    //如果当前function返回false,则结束循环(break)
                    //如果当前function返回true,则结束本次循环,继续下一次
                    return true;
                }
                alert(index+":"+$(element).html())
            });-->

            //3.$.each(object,[callback])
            <!--$.each(city1,function(){
                alert($(this).html())
            });-->

            //4.for...of:jquery3.0版本之后提供的方式
            for(li of city1){
                alert($(li).html())
            }
        });
    </script>

 3.事件绑定

1.jquery标准的绑定方式
        jq对象.事件方法(回调函数);
        * 注:如果调用事件方法,不传递回调函数,则会触发浏览器默认行为
                * 表单对象.submit();//让表单提交
<script type="text/javascript">
        $(function(){
            //1.获取name对象,绑定click事件
            $("#name").click(function(){
                alert("我被点击了")
            });
            //给name绑定鼠标移动到元素之上事件。绑定鼠标移出事件
             $("#name").mouseover(function(){
                alert("鼠标来了")
            });
             $("#name").mouseout(function(){
                alert("鼠标走了")
            });
            //简化操作
            $("#name").mouseover(function(){
                alert("鼠标来了")
            }).mouseout(function(){
                alert("鼠标走了")
            });
            //让文本输入框获得焦点
            $("#name").focus();
            //表单对象.submit();//让表单提交
        });
    </script>
2.on绑定事件/off解除绑定
        jq对象.on("事件名称",回调函数)
        jq对象.off("事件名称")
<script type="text/javascript">
        $(function(){
            //1.使用on给按钮绑定单击事件 click
            $("#btn").on("click",function(){
                alert("我被点击了...")
            });
            //1.使用off给按钮接触btn按钮的单击事件 click
            $("#btn2").click(function(){
               $("#btn").off("click");
               //$("#btn").off(); //将组件上所有的事件全部解绑
            });
        });
    </script>
3.事件切换:toggle
        jq.toggle(fn1,fn2...)
<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>

案例:广告显示和隐藏

 <script type="text/javascript">
       <!--
            需求:
                1.当页面加载完,3秒后。自动显示广告
                2.广告显示5秒,自动消失
            分析:
                1.使用定时器来完成。setTimeout(执行一次定时器)
                2.分析发现JQuery的显示和隐藏动画效果其实就是控制display
                3.使用show/hide方法来完成广告的显示
       -->
       //入口函数,在页面加载完成之后,定义定时器,调用这两个方法
       $(function(){
            //定义定时器,调用adshow方法,3秒后执行一次
            setTimeout(adShow,3000);
            //定义定时器,调用adHide方法,8秒后执行一次
            setTimeout(adHide,8000);
       });
       //显示广告
       function adShow(){
            //获取广告div,调用显示方法
            $("#ad").show("slow");
       }
       //隐藏广告
       function adHide(){
            //获取广告div,调用隐藏方法
            $("#ad").hide("slow");
       }
    </script>

案例:抽奖实现

<script type="text/javascript">
        <!--
            分析:
                1.给开始按钮绑定单击事件
                    1.1 定义循环定时器
                    1.2 切换小相框的src属性
                        * 定义数组,存放图片资源路径
                        * 生成随机数。数组索引
                2.给结束按钮绑定单击事件
                    1.1 停止定时器
                    1.2 给大相框设置src属性
        -->
        var imgs = ["../img/01.jpg",
                    "../img/02.jpg",
                    "../img/03.jpg",
                    "../img/04.jpg",
                    "../img/05.jpg",
                    "../img/06.jpg",
                    ];
        var startId; //开始定时器的id
        var index; //随机角标
        $(function(){
            //处理按钮是否可以使用的效果
            $("#startID").prop("disabled",false);
            $("#stoptID").prop("disabled",true);

            //1.给开始按钮绑定单击事件
            $("#startID").click(function(){
                //1.1定义循环定时器,20毫秒执行一次
                startId = setInterval(function(){
                    //处理按钮是否可以使用的效果
                    $("#startID").prop("disabled",true);
                    $("#stoptID").prop("disabled",false);

                    //1.2生成随机角标0-6
                    index = Math.floor(Math.random()*7); //0.000-0.999 * 7然后向下取整
                    //1.3设置小相框的src属性
                    $("#img1ID").prop("src",imgs[index]);
                },20);
            });

            //1.给结束按钮绑定单击事件
            $("#stopID").click(function(){
                //处理按钮是否可以使用的效果
                $("#startID").prop("disabled",false);
                $("#stoptID").prop("disabled",true);

                //1.1停止定时器
                clearInterval(startId);
                //1.2 给大相框设置src属性
                //设置点击按钮之后先隐藏图片一秒钟再显示出来
                $("#img2ID").prop("src",imgs[index]).hide();
                $("#img2ID").show(1000);
            });
        });
    </script>

5.插件:增强JQuery的功能
        1.实现方式:
                1.$.fn.extend(Object)
                        * 增强通过Jquery获取的对象的功能 $("#id")

<script type="text/javascript">
    //1.定义jquery的对象插件
    $.fn.extend({
        //定义了一个check()方法。所有的jq对象都可以调用该方法
        check:function(){
            //让复选框选中
            //this:调用该方法的jq对象
            this.prop("checked",true);
        },
        uncheck:function(){
            //让复选框不选中
            this.prop("checked",false);
        }
    });

    $(function(){
        //获取按钮
        //$("#btn-check").check();
        //复选框对象.check();

        $("btn-check").click(function(){
            //获取复选框对象
            $("input[type='checkbox']").check();
        });
        $("btn-check").click(function(){
            //取消复选框对象
            $("input[type='checkbox']").uncheck();
        });
    });
</script>

                2.$.extend(Object)
                        * 增强JQuery对象自身的功能 $/jQuery

<script type="text/javascript">
    //对全局方法扩展2个方法,扩展min方法,求2个值的最小值,扩展max方法,求2个值的最大值
    $.extend({
        max:function(a,b){
            return a >= b ? a:b;
        },
        min:function(){
            return a <= b ? a:b;
        }
    });

    //调用全局方法
    var max = $.max(2,3);
    alert(max)
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值