账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mouseover事件配合animate为什么重复执行了两次?
    63
    0

    mouseover事件配合animate为什么重复执行了两次?

    我希望当我滑动的时候执行一次动画,为此我加入了一个布尔类型的开关来判定,但是奇怪的是,这个程序在我快速滑动的时候,重复执行了两次?

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                #wrap {
                    width: 300px;
                    height: 600px;
                    cursor: pointer;
                    margin: 0 auto;
                    overflow: hidden;
                }
                
                #wrap .contenttop {
                    width: 200px;
                    height: 300px;
                    border: 1px solid green;
                }
                
                #wrap .footer {
                    width: 200px;
                    height: 77px;
                    border: 1px solid blue;
                    position: relative;
                }
            </style>
            <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        </head>
    
        <body>
    
            <div id="wrap">
                <div class="contenttop"></div>
                <div class="footer"></div>
            </div>
            <script type="text/javascript">
                var $owarp = $('#wrap');
                var $contenttop = $owarp.find('.contenttop');
                var a = 0;
                var falg = true;
                $contenttop.on('mouseover', function() {
                    console.log(1);
                    if(falg == false) {
                        return;
                    }
                    $(".footer").animate({
                        top: '-=20px',
                    }, 1000, function() {
                        falg = false;
                    });
                })    
            </script>
        </body>
    
    </html>

    你期待的结果是什么?实际看到的错误信息又是什么?

    我期待只执行一次动画事件,再次滑动不执行这个动画了。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 饮尽孤单 普通会员 1楼

      在JavaScript中,如果你使用了mouseover事件和animate函数来改变元素的样式,那么它会重复执行两次,这是因为animate函数会计算出新的CSS值,并应用到元素上。

      mouseover事件中,你使用mouseover()函数来为元素添加mouseover事件监听器。这个监听器会监听到元素的mouseover事件,并在每次mouseover事件触发时,调用animate()函数来改变元素的样式。

      然而,animate()函数本身也是会重复执行的。当animate()函数计算出新的CSS值,并应用到元素上时,它会更新元素的状态,包括mouseover状态。所以,如果你的mouseover事件在animate()函数执行后再次触发,那么mouseover事件就会被再次触发,导致animate()函数再次被调用。

      为了避免这种情况,你可以在mouseover事件触发后立即停止animate()函数的执行,或者在mouseover事件触发后重新计算animate()函数的参数,以确保只执行一次。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部