使 jQuery 删除 else 语句中的动画

Make jQuery remove animation in else statement

我正在尝试停止在 768px 以下调用的 .slideUp 动画。期望的结果一直有效,直到我将大小调整回 768px 以上,然后导致我的桌面样式菜单向上滑出视图。

这背后的原因是因为我正在使用 angular 更改页面内容并希望移动体验在单击 link 后关闭菜单。

有没有办法让我的 else 语句完全删除 .slideUp 动画?

jQuery

$(window).on("load resize", function () { 
    if ($(this).width() < 768) {
        $('.lnk').on('click', function () { 
            $('#navigation').slideUp(500);
        });
    }else{
        // Things I've tried:

        // $('.lnk').on('click', function () { 
        // return false
        // });

        // $('.lnk').on('click', function () { 
        // $('#navigation').stop();
        // });

        // $('.lnk').on('click', function () { 
        // $('#navigation').slideDown();
        // });

        // $('.lnk').on('click', function () { 
        // $('#navigation').show();
        // });
    }
});

理论上,我可能会保留它,因为不会有太多人在访问时实际调整浏览器的大小,但我很迂腐。

不幸的是,我找不到答案,不得不重新编写我的代码以获得有效的结果。

我不会接受这个答案,因为它没有解决我的问题,我只是想跟进我使用的解决方案。

因此,我没有办法只删除 slideToggle 选项,而是更改了函数以添加、删除或切换 类,具体取决于加载和调整大小时的 windows 大小。

此解决方案还删除了由于 height:auto 属性 而导致的平滑动画。如果将高度设置为静态值,即可以实现平滑过渡。 height:300px

CSS

#navigation {
    height:0;
}
.responsive_nav_open {
    height:auto
}

jQuery

<script>
    (function ($) { 
        $('.responsive_nav').on('click', function () {
            $('#navigation').toggleClass('responsive_nav_open');
        });
        $('.lnk').on('click', function () { 
            $('#navigation').toggleClass('responsive_nav_open');
        });
        $(window).on('load resize', function () { 
        if ($(this).width() <= 768) {
            $('#navigation').removeClass('responsive_nav_open');
        } else {
            $('#navigation').addClass('responsive_nav_open');
        }
    } );

    } )(jQuery);
    </script>

如果有人可以解决最初的问题,只是为了澄清它是否真的可能,我仍然有兴趣知道。