【问题标题】:Stopping slidedown submenu from sliding up when hovering over submenu将鼠标悬停在子菜单上时停止滑动子菜单向上滑动
【发布时间】:2012-07-14 12:23:30
【问题描述】:

我有以下脚本来处理向下滑动子菜单:

$('#nav li #bottom').hover(function() {
    $(this).closest('#nav li').find('#sub_nav').slideDown("slow");
},
function() {
    $(this).closest('#nav li').find('#sub_nav').slideUp("slow");
});

脚本以这种方式编写,因此只有当用户将鼠标悬停在导航列表项中的一个 div 上时才会触发向下滑动,即 #bottom。

我遇到的问题是,虽然向下滑动工作正常,但当用户将鼠标悬停在子菜单上时菜单会向上滑动,当然,我不希望子菜单向上滑动直到鼠标/光标离开 @ 987654324@或#sub_nav

我创建了一个 jsfiddle here,以便您可以看到正在运行的菜单。

导航项目结构截图

【问题讨论】:

    标签: jquery navigation slidedown slideup


    【解决方案1】:

    你可以用div#wrapper包裹#sub_nav,这样sub_menu是底部的一部分:

    <div id="bottom">
        <a href="#">Menu Item 1</a>
        <ul id="sub_nav">
          <li><a href="#">Item 1</a></li>
          <li><a href="#">Item 2</a></li>
          <li><a href="#">Item 3</a></li>
          <li><a href="#">Item 4</a></li>
        </ul>
    </div>
    

    你也可以使用stop()方法:

    $('#nav li #bottom').hover(function() {
        $(this).find('#sub_nav').stop().slideDown("slow");
    },
    function() {
        $(this).find('#sub_nav').stop().slideUp("slow");
    });
    

    DEMO

    【讨论】:

    • 谢谢,这确实回答了我的问题,所以我当然会这样标​​记它。不幸的是,我忘记了一些重要信息。我想在其上使用脚本的站点是一个 Wordpress 站点,我不确定如何自定义主题以便在 #bottom div 中创建子菜单。因此我在上面的脚本中使用了 .closest('nav li') 。有没有办法调整脚本以使用#bottom div之外的ul?我在原始答案的末尾包含了导航项结构的屏幕截图。
    • @Nick 不客气,你可以试试这个基于原始html结构的脚本jsfiddle.net/uVbJp/4
    • 再次感谢。我已经实施了您的建议,但事情仍未如我所愿。你可以看到我试图让它在here 上工作的页面。第二个导航项“新闻”有一个子菜单,我已将您的脚本(针对正确的类进行了修改)包含在 other.js 中(第 73-85 行)。如您所见,当用户将鼠标悬停在 .top_nav 上时,子菜单仍然出现,并且当光标移出子菜单 div 时,脚本不再起作用。你能看看这个吗?
    • 我已将问题标记为已回答,因为它确实回答了原始问题。如果您对如何使用我的特定标记有任何想法,那么我很高兴听到它。如果我发现任何其他信息,我会报告回来
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多