美文网首页
<jQuery>总结:注意点

<jQuery>总结:注意点

作者: 玉圣 | 来源:发表于2018-05-26 17:36 被阅读12次

    一、函数方法

    1、静态函数的使用

    1、jQuery中的each静态方法和mao静态方法的区别

    1.1 返回值的不同:

    • each 静态方法默认的返回值就是所遍历的变量
      遍历数组则返回的是数组,遍历对象则返回的是对象
    • map 静态方法默认的返回值就是一个空数组

    1.2 回调函数中对值处理方式不同:

    • each 静态方法不支持在回调函数中对遍历的数组进行处理
    • map 静态方法可以在回调函数中通过return对遍历的数组进行处理,然后生成一个新数组返回

    示例:

    <script>
        var arr = [0, 1, 2, 3];
        console.log("each");
        var $arr = $(arr).each(function (index, value) {
            console.log(index, value);
            return index + value;
        });
        console.log($arr);  
    
        console.log("map");
        var $map = $(arr).map(function (index, value) {
            console.log(index, value);
            return index + value;
        });
        console.log($map);
    
    </script>
    
    打印结果

    2、scrollTop()方法:

    1、使用

    1.1 获取:

        <script src="js/jquery-1.12.4.js"></script>
        <script>
            $(function () {
               //编写jQuery相关方法
                //获取滚动的偏移量
                $(".scroll").scrollTop();
    
                //获取网页滚动的偏移量
                $("body").scrollTop() + $("html").scrollTop();
    
                //设置滚动的偏移量
                $(".scroll").scrollTop(300);    //300px
                //获取网页滚动的偏移量
                $("html, body").scrollTop(300); //300px
            });
        </script>
    

    注意:

    • 为了保证浏览器的兼容,获取网页滚动的偏移量需要将body和html的两个偏移量相加起来
    • 为了保证浏览器的兼容,同样在设置网页滚动的偏移量时,需要同时设置body和html两个偏移量

    二、动画:

    1、执行动画的注意点:

    1.1 同一动画执行前需要先停止当前动画:
    在jQuery中,如果需要执行动画,建议在执行某一动画之前先调用stop方法,然后再执行动画

    因为在jQuery中有一个动画队列,每次执行的动画都会被加入到这个动画队列中,先进入的先执行,后进入的要等前一个执行完毕才能继续执行。这就导致在快速重复执行某一动画的时候,造成动画等待的效果,因此,需要在重复执行下一个动画之前,要先停止掉当前的动画。
    注意:是同一个动画

    示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动画-下拉菜单</title>
        <style>
            *{
                margin: 0;
                padding: 0;
                list-style: none;
            }
    
            .nav {
                width: 300px;
                height: 40px;
                background-color: red;
                margin: 100px auto;
                text-align: center;
            }
    
            .nav>li {
                width: 100px;
                height: 40px;
                line-height: 40px;
                float: left;
            }
    
            .sub {
                background-color: deepskyblue;
                display: none;
            }
    
            .sub>li {
                border-bottom: 1px solid #fff;
            }
        </style>
    
        <script src="js/jquery-1.12.4.js"></script>
        <script>
            $(function () {
                //鼠标进入
                $(".nav>li").mouseenter(function () {
                    //获取当前li的子元素(class为.sub的)
                    var $sub = $(this).children(".sub");
                    //停止当前li子元素的动画
                    $sub.stop();
                    $sub.slideDown(1000);
                });
    
                //鼠标移出
                $(".nav>li").mouseleave(function () {
                    //获取当前li的子元素(class为.sub的)
                    var $sub = $(this).children(".sub");
                    //停止当前li子元素的动画
                    $sub.stop();
                    $sub.slideUp(1000);
                });
            });
        </script>
    </head>
    <body>
    
    <ul class="nav">
        <li>一级菜单
            <ul class="sub">
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </li>
        <li>一级菜单
            <ul class="sub">
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </li>
        <li>一级菜单
            <ul class="sub">
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
                <li>二级菜单</li>
            </ul>
        </li>
    </ul>
    
    </body>
    </html>
    
    下拉菜单动画.gif

    1.2 同一动画(多个动画组合)的情况:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>动画-淡入淡出广告</title>
        <style>
            *{
                margin: 0;
                padding: 0;
                list-style: none;
            }
    
            .ad {
                width: 348px;
                height: 244px;
                position: fixed;
                right: 0;
                bottom: 0;
                margin: 10px;
                display: none;
            }
    
            .ad>img {
                width: 348px;
                height: 244px;
            }
    
            .close {
                width: 40px;
                height: 40px;
                position: absolute;
                top: 0;
                right: 0;
            }
    
        </style>
    
        <script src="js/jquery-1.12.4.js"></script>
        <script>
            $(function () {
               //编写jQuery相关方法
                $(".close").click(function () {
                    $(".ad").slideUp(1000);
                });
                //注意:
                $(".ad").stop().slideDown(1000).fadeOut(1000).fadeIn(1000);
            });
        </script>
    
    </head>
    <body>
    <div class="ad">
        <img src="../imgs/ad.png"/>
        <span id="close" class="close"></span>
    </div>
    </body>
    </html>
    
    淡入淡出广告动画.gif

    2、动画停止方法stop()的使用:

    注意:不同参数的效果不同

        <script src="js/jquery-1.12.4.js"></script>
        <script>
            $(function(){
                $("#btn").click(function () {
                    $("ul").append("<li>我是新增的一个li</li>");
                });
                
                $("ul").delegate("li", "click", function () {
                    console.log(this);
                    console.log($(this).html());
    
                });
    
                $("#btn1").click(function () {  //开始动画按钮
                    //链式动画
                    $("div")    //需要执行动画的元素
                        .animate({  //动画1
                            width: 500  //修改宽度为500
                        }, 1000,    //动画时长1000毫秒
                            "linear")   //匀速动画
                        .delay(2000)    //延时2000毫秒
                        .animate({  //动画2
                            height: 500  //修改高度为500
                        }, 1000,    //动画时长1000毫秒
                            "swing" //缓动动画
                        );
                });
                $("#btn2").click(function () {  //停止动画按钮
                    //立即停止当前动画,继续执行后续的动画
                    $("#btn").stop();
                    $("#btn").stop(false);
                    $("#btn").stop(false, false);
    
                    //立即停止当前和后续所有的动画
                    $("#btn").stop(true);
                    $("#btn").stop(true, false);
    
                    //立即完成当前的动画,继续执行后续动画
                    $("#btn").stop(false, true);
    
                    //立即完成当前的,并且停止后续所有的
                    $("#btn").stop(true, true);
                });
            });
        </script>
    

    相关文章

      网友评论

          本文标题:<jQuery>总结:注意点

          本文链接:https://www.haomeiwen.com/subject/zywmjftx.html