jQuery防止动画重复执行

19 篇文章 0 订阅
15 篇文章 0 订阅
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        div {
            position: absolute;
            right: 0px;
            background-color: #abc;
            width: 90px;
            height: 90px;
            margin: 5px;
            display: none;
        }
    </style>
    <script src="jquery-3.1.0.min.js" type="text/javascript"></script>
    <script>

        //判断元素是否在动画效果中,防止连续多次点击动画重复 解决办法1:
        function ElementIsInAnimated(id) {
            return $(id).is(":animated");
        }

        //解决办法2: stop方法,强制上一动画立即结束同时运行下一个动画效果,但会造成界面脱节,不美观

        /*  解决办法3:在animated方法中设置标识,判断动画是否完毕
            var IsOver = false;
            $("xxx").animate({ width: '50%' }, function () {
                IsOver = true;
            });
        */

        function Expand() {
            if ($("#box").is(":hidden")) {
                if (!ElementIsInAnimated("#box")) {
                    $("#box").stop().show().animate({ width: '80%' }, "slow");
                }
            }
        }
        function Shrink() {
            if ($("#box").is(":visible")) {
                if (!ElementIsInAnimated("#box")) {
                    $("#box").stop().animate({ width: 0 }, "fast").hide("fast");
                }
            }
        }
    </script>

</head>
<body>
    <input type="button" value="展开侧边div动画" οnclick="Expand()" />
    <input type="button" value="收缩侧边div动画" οnclick="Shrink()" />
    <div id="box">侧边栏</div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值