jQuery 将 delay() 与 hide() 结合使用

jQuery using delay() with hide()

我有以下脚本,它在单击 #icon-hamburger 时显示/隐藏下拉菜单。菜单在显示/隐藏时有短暂的淡入淡出动画:

// nav-mobile
$('#icon-hamburger, .icon-close').click(function() {
    if ($('.nav-mobile').css('opacity') === '0') {

        $('.nav-mobile').show();
        $('.nav-mobile').animate({
            'opacity': '1'

        },

        250, function() {
            // Animation complete.
        });
    }
    if ($('.nav-mobile').css('opacity') === '1') {
        $('.nav-mobile').animate({
            'opacity': '0'
        },

        250, function() {
            // Animation complete.
        });
        $('.nav-mobile').delay(250).hide();
    }
    return false;
});

菜单淡入效果很好,但它没有淡出而是消失了。我本以为以下行会让元素在隐藏之前淡出?:

$('.nav-mobile').delay(250).hide();

单击 here 查看 JSFiddle 示例。检查元素。

菜单还在。这不是隐藏。只是不透明度为零。

只需删除 jQuery 隐藏代码。

$('.nav-mobile').delay(250).hide();

$('.nav-mobile').delay(250).hide(200);

在隐藏函数中添加一些持续时间,这样它就会隐藏一些动画。

如果您想淡出元素,请使用 .fadeOut(200) 而不是 .hide(200) 函数。