javascript - fadeIn 在 mouseleave(setTimeout) 之后从头开始

标签 javascript jquery

我正在寻找我正在使用的导航菜单的解决方案。这是JSFiddle您可以在其中看到工作代码。

fadeIn 效果只需要在 nav-item 悬停时发生,但当鼠标从菜单的底部、左侧或右侧离开时会发生。

最佳答案

看起来您想要的是:当您将鼠标从一个选项卡移动到另一个选项卡时,您不希望发生淡出和淡入。

在这种情况下,这是因为您没有跟踪菜单是否打开。您应该仅在菜单未打开时进行淡入淡出,否则只需隐藏并显示而不淡入淡出。

代码:

var timer;
var isMenuOpen = false;
$('.nav-item').hover(
    function() {
        $('.subnav--main').hide();
        $('.promoted-content--main').hide();
        clearTimeout(timer);
        if(isMenuOpen){
            $(this).find('ul').show();
        }
        else{
            isMenuOpen = true;
            $(this).find('ul').fadeIn( 'slow' );
        }
    },
    function() {
        timer = setTimeout(function() {
            $('.subnav--main').fadeOut( 'fast' );
            $('.promoted-content--main').fadeOut( 'fast' );
            isMenuOpen = false;
        }, 1000);
    }
);

还有 jsfiddle:http://jsfiddle.net/qdafe3uw/

关于javascript - fadeIn 在 mouseleave(setTimeout) 之后从头开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25772500/

相关文章:

jquery - 调整视口(viewport)宽度的 Bootstrap 工具提示数据放置

javascript - 比较 Ext.data.JsonReader 和 Ext.data.ArrayReader 之间的性能

javascript - 有没有比这更简单的方法来计算扑克中的顺子?

Jquery 模态对话框禁用 Internet Explorer 8 兼容模式中的对话框

javascript - jQuery追加破坏原始元素

javascript - 如何为div的全高设置动画?

javascript - 从对象 Javascript 内部调用的 setInterval?

javascript - 如何使用javascript获取查询字符串值

javascript - 无法获取 AngularJS Controller 对象

javascript - 为什么它在创建 json 对象时创建数组新数组?