在带有子菜单的菜单上需要有关 JQuery 鼠标悬停的帮助

Posted

技术标签:

【中文标题】在带有子菜单的菜单上需要有关 JQuery 鼠标悬停的帮助【英文标题】:Need help on JQuery mouseover on menu with submenus 【发布时间】:2011-05-05 07:39:37 【问题描述】:

我有这个菜单 (@ jsFiddle),如果发生以下鼠标事件,就会发生这种情况:

    悬停在Movies 然后开始在Movie library 上拖动鼠标到鼠标悬停 在拖动时不小心触摸了Home 菜单项 导致Home 子菜单出现并隐藏Movies 子菜单。

这不是我想要的效果。所以我正在寻求一些帮助。我该如何解决这个问题,如果我拖动鼠标并且我不小心触摸了其他一些菜单选项,javascript 将足够聪明,知道它不应该隐藏选定的子菜单。

我可以在悬停时添加某种延迟吗?感谢所有帮助!

【问题讨论】:

【参考方案1】:

您可以使用hoverIntent 来限制 mousein/mouseouts 事件以防止意外触发(我认为您需要这个...)。检查 hiverIntent 网站上的示例。你会喜欢的。

【讨论】:

我想尽量减少使用外部库。 当然你可以去看看这个插件源码,拿走你想要的……至少你会得到一些灵感。 您能否提供一个示例,说明如何将插件与我现有的代码集成? (如果这不是太多要求) 好的。这里是:jsfiddle.net/nilcolor/FRS7A/13 没有 hoverIntent 调整,但它可以工作。 看,hoverIntent 模仿 hover,但添加了一些不错的功能。真的很好。【参考方案2】:

我认为这个插件完全适合你想做的事情:http://cherne.net/brian/resources/jquery.hoverIntent.html

【讨论】:

【参考方案3】:

我希望这是你想要的。如果没有,我相信它会引导您找到最终解决方案

$().ready(function()
    $('ul.menu').hover(function(event)       
        var hoverItem = event.target;
        //hide other ul's submenu
        $(hoverItem).siblings('li').children('ul').stop(true,true).hide()
        //show current submenu
        $(hoverItem).children('ul').stop(true,true).fadeIn()
    ,function(event)
        //console.log(event.target);
        $('ul.menu li').children('ul').stop(true,true).delay(1500).fadeOut()
    )
);

希望对您有所帮助。干杯

【讨论】:

不,不完全是。现在我如果将鼠标悬停在Home 上以到达Movies,则只显示主子菜单。

以上是关于在带有子菜单的菜单上需要有关 JQuery 鼠标悬停的帮助的主要内容,如果未能解决你的问题,请参考以下文章

悬停在子菜单上后保持父菜单项突出显示(HTML/CSS/Jquery)

悬停时的Jquery动画子菜单不流畅

带有悬停子菜单的固定菜单有点关闭

如何让我的子菜单在 jQuery 悬停菜单中保持打开状态?

将鼠标悬停在一个带有子菜单的引导子菜单项上会重新排列父列表项

关闭多级 jquery 下拉菜单