day21 --> (JQuery高级)

1、动画:

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

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

参数:

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

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

swing : 表示动画执行是 —— 先慢,中间快,最后又慢

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

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

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

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

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

1、slideDown([speed],[esing],[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])

    <script>
        //隐藏div
        function hideFn(){
            //$("#showDiv").hide(5000,"linear");
            //滑动方式
            //$("#showDiv").slideUp("slow");
            //淡出
            $("#showDiv").fadeOut("slow");
        }

        //显示div
        function showFn(){
            //$("#showDiv").show("slow","swing");
            //滑动方式
            //$("#showDiv").slideDown("slow");
            //淡入
            $("#showDiv").fadeIn("slow");
        }

        //切换div
        function toggleFn(){
            //$("#showDiv").toggle(5000,"swing");
            //滑动方式
            //$("#showDiv").slideToggle("slow");
            //淡出淡入切换
            $("#showDiv").fadeToggle("slow");
        }

    </script>

 

 2.遍历

1、js的遍历方式

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

2、jq的遍历方式

1.jq对象.each(callback)

2.返回值 : ObjectjQuery.each(object,[callback])  --> $.each(object,[callback])

3.for...of

 

<script type="text/javascript">
        // jq的遍历方式
        //
        // 1.jq对象.each(callback)
        //
        // 2.返回值 : ObjectjQuery.each(object,[callback])  --> $.each(object,[callback])
        // 3.for...of :
        $(function () {
            //1、获取所有ul下的li
            var citys = $("#city li");

            //2.1、js遍历li
/*                for (let i = 0; i < citys.length; i++) {
                //获取内容
                    if (citys[i].innerHTML == "上海"){
                        //break;结束循环
                        continue; //跳过本次循环
                    }
                alert(i + citys[i].innerHTML);
            }*/

            //2.2、jq对象.each(callback)
/*            citys.each(function (index,element) {
                //获取li对象
                //1、this
                //alert(this.innerHTML);
                //alert($(this).html());

                //2、获取Li对象的第二种方式 : 在回调函数中定义参数  index(索引)  element(元素对象)
                //alert(index + "-->" + element.innerHTML);
                //alert(index + "-->" + $(element).html());

                //判断是上海结束循环
                if ("上海" == $(this).html()){
                    //如果当前function返回为false,则结束循环【相当于break】,如果返回为true,则跳过本次循环【continue】
                    return false;
                }
                alert($(this).html());
            });*/

            //2.3 $.each(object,[callback])
            /*$.each(citys,function (){
               alert($(this).html());
            });*/

            //2.4 for...of... : jquery 3.0 版本之后提供的方式
            for(li of citys){
                alert($(li).html());
            }
            
        });
    </script>

 

 3.JQuery事件绑定

 1、jQuery标准的绑定方式

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

    <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("鼠标走了...");
            });*/

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

    </script>

 

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

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

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

    <script type="text/javascript">
        $(function (){
            //1、使用on给按钮绑定单击事件 click
            $("#btn").on("click",function (){
                alert("我被点击了");
            })

            //使用off解除btn按钮的单击事件
            $("#btn2").click(function (){
                //$("#btn").off("click"); //解除click事件
                $("#btn").off(); //将组件上的所有事件都解除
            })
        })
    </script>

 

 3、事件切换 : toggle

jq对象.toggle(fn1,fn2,...) 【第一次执行fn1,下次执行fn2,...依此类推,执行到最后一个在从第一个开始】

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

 案例一、广告的显示与隐藏:

    <script>

        $(function (){
            setTimeout(adShow,3000);
            setTimeout(adHide,8000);
        })

        //显示广告函数
        function adShow() {
            $("#ad").fadeIn("slow");
        }
        //隐藏广告函数
        function adHide() {
            $("#ad").fadeOut("slow");
        }
    </script>

 

 案例二、抽奖演示

<script 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"
    ];

        //给开始按钮绑定单击事件
        var index; //随机索引
        var changeImg; //定时器名
        $("#startID").click(function (){
            $("#startID").prop("disabled",true); //开始按钮不可用
            $("#stopID").prop("disabled",false); //结束按钮可用
            changeImg = setInterval(function  (){
                index = Math.floor(Math.random() * 7);
                $("#img1ID").prop("src",imgs[index]);
            },100);
        });

        $("#stopID").click(function () {
            $("#stopID").prop("disabled",true);
            $("#startID").prop("disabled",false);
            clearInterval(changeImg);
            $("#img2ID").prop("src",imgs[index]).hide();
            $("#img2ID").fadeIn(2500);
        })

</script>

 

 2.插件:增强JQuery功能

1、实现方式:

1.jQuery.fn.extend(object) --> $.fn.extend(object) 【对象级别的插件】

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

2.jQuery.extend(object) 【全局级别的插件】

 增强JQuery对象自身的功能, $/jQuery

<script type="text/javascript">
            $.fn.extend({
                check:function () {
                    //让复选款都选中
                    this.prop("checked",true);
                },
                uncheck:function () {
                    //让复选款都不选中
                    this.prop("checked",false);
                }
            });
            
            $(function (){
                //获取按钮
                $("#btn-check").click(function (){
                    $("input[type='checkbox']").check();
                });
                $("#btn-uncheck").click(function (){
                    $("input[type='checkbox']").uncheck();
                })
            });
            
    </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;
            }
        })

        //调用: $.方法名
        // let max = $.max(31,5);
        // alert(max);

        let min = $.min(31,5);
        alert(min);

    </script>

 

posted @ 2022-11-30 16:42  羽梦齐飞  阅读(13)  评论(0编辑  收藏  举报