如何在jQuery中停止动画构建?

时间:2016-09-20 06:09:50

标签: jquery animation

我有以下脚本来打开侧边菜单。 菜单逐行打开。 但是,如果您快速单击菜单按钮,则会出现动画构建。 我怎么能阻止这种情况发生?在.animate之前尝试使用.stop(true)和.finish(),但没有达到预期的效果。我是jQuery的新手,所以我可能做错了。

        var s = 0;
        var navMenu = document.getElementById("nav_menu");
        var navBtn = document.getElementById("btn");
        var speed = 100;

            function menuOpen() {
                if (s==0){

                    $("#nav_menu").scrollTop(0);
                    navBtn.classList.add('close');
                    navMenu.style.zIndex = "4";
                    navMenu.style.overflowY = 'auto';

                    $('ul').each(function() {
                        $(this).children().each(function(i) {
                            $(this).delay(i * speed).animate({
                                left: 0
                            });
                        });
                    });

                    s++;

                    $("li").promise().done(function() {
                        navMenu.style.zIndex = "4";
                        navMenu.style.overflowY = 'auto';
                    });

                } else {

                    navBtn.classList.remove('close');


                    $('ul').each(function() {
                        $(this).children().each(function(i) {
                            $(this).delay(i * speed).animate({
                                left: "100%"
                            });

                        });
                    });

                    s=0;

                    $("li").promise().done(function() {
                        navMenu.style.zIndex = "0";
                        navMenu.style.overflowY = 'hidden';
                    });


                };

            };

请尽可能解释您的答案。 感谢

1 个答案:

答案 0 :(得分:0)

是的,必须使用stop() jQuery方法停止动画,请检查您的代码。您必须先拨打stop(),然后拨打animate()

$(this).stop().animate({left: 0},i * speed);

$(this).stop().animate({left: "100%"},i * speed);