首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery菜单效果出错

问jQuery菜单效果出错
EN

Stack Overflow用户
提问于 2011-05-13 03:41:27
回答 2查看 585关注 0票数 0

我正在寻找一种方法来淡出列表排序导航中的子菜单,因为我希望它淡入淡出:

始终有活动的菜单项-如果活动的菜单项在子菜单中-也有活动的父菜单项。因此,在初始化时,当前项目或当前父项目处于活动状态的子菜单应该是可见的。如果我悬停在另一个菜单项上,它的子菜单将淡入,活动的菜单项将淡出。离开整个菜单后,活动子菜单再次淡入。此外,我还使用了jQuery插件hoverIntent (http://cherne.net/brian/resources/jquery.hoverIntent.html)为每个悬停操作设置超时。这就是我到目前为止所得到的,但它真的是错误的。由于某些原因,子菜单有时会完全消失,当悬停两个项目而不离开导航时,两个子菜单会重叠。有没有人有主意或建议给我?=)请看这里的演示:http://jsfiddle.net/BQuPz/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-13 04:52:51

CSS的问题:最好不要自己玩display:none和opacity,把它留给jQuery,并为fadeIn()和fadeOut()使用适当的函数。

您应该使用display:inline-block,而不是将display:block; float:left;放在菜单的<li>元素上。如果浮动<li>s,这将有效地将它们从父容器中分离出来,留下零大小的ul,因此除非显式设置它的大小,否则不可能侦听mouseleave事件。

代码的问题:在hoverIntent插件中,timeout可能不是你想要的。Timeout在一段时间后自动激发out事件。要延迟悬停效果,请改用sensitivity和interval。查看documentation page。

如果你应用上面的修复,唯一需要的事件是hoverIntent的over和主导航的mouseleave。当用户悬停导航时,over事件在当前子菜单中淡入淡出,其余事件淡出,mouseleave在活动子菜单中淡出。看看修改后的jsfiddle演示:http://jsfiddle.net/BQuPz/4/

代码语言:javascript
复制
// Hide inactive ones
$('#main-nav > li:not(.current-menu-parent) .sub-menu').hide();

// What to do when hovering over a menu item
$("#main-nav > li").hoverIntent({
    over: function(){
        // Find the hovered menu's sub-menu
        var $submenu = $(this).find('.sub-menu');

        // Stop the animation and fade out the other submenus
        $('.sub-menu').not($submenu).stop(true,true).fadeOut(260);

        // Fade in the current one
        $submenu.fadeIn(260);
    }
});

// What to do when user leaves the navigation area
$('#main-nav').mouseleave(function(){
    // Fade out all inactive submenus
    $('#main-nav > li:not(.current-menu-parent) .sub-menu').fadeOut(260);

    // Fade in the active one
    $('.current-menu-parent .sub-menu').fadeIn(260);
});
票数 2
EN

Stack Overflow用户

发布于 2011-05-13 04:07:31

我会使用带有回调的fadeIn和fadeOut函数,而不是在$(this).find("ul").animate({'opacity': '1'}, 250);中使用动画。然后你确定你的fadeIn动画在淡出结束后开始

代码语言:javascript
复制
element.fadeOut(250,function(){otherElement.fadeIn(250)})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5983553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档