【问题标题】:jquery display submenu while hoveringjquery在悬停时显示子菜单
【发布时间】:2014-02-11 08:55:28
【问题描述】:

我有一个水平菜单。此子菜单显示在 ul 之外。当我将鼠标悬停在特定类(例如 .p_over)时,我希望 .submenu-div 出现。当我悬停 .submenu-div 时,我希望它仍然存在。但是,当我的鼠标从 .p_over 移动到 .submenu-div 时,它消失了。

<ul class="menu">
        <li id="li_arrow_right" class="p_over"><a href="pages/over.php">Over <span>&#59230;</span></a></li>
        <li id="li_arrow_right" class="p_projecten"><a href="pages/projecten.php">Onze projecten<span>&#59230;</span></a></li>
        <li id="li_arrow_right" class="p_nieuws"><a href="pages/nieuws.php">Nieuws<span>&#59230;</span></a></li>
        <li><a href="pages/contact.php">Contact</a></li>
    </ul>
    <span id="link_search"><a href="#">&#128269;</a></span>
    <div class="btn_small" id="btn_arrow_right">Vragenlijsten<span>&#59230;</span></div>

    <div class="submenu">
        <ul class="ul_submenu">
            <li id="li_arrow_right"><a href="over.php">Wie zijn wij?<span>&#59230;</span></a></li>
            <li id="li_arrow_right"><a href="projecten.php">Wat bieden wij?<span>&#59230;</span></a></li>
            <li id="li_arrow_right"><a href="nieuws.php">Wie bent u?<span>&#59230;</span></a></li>
        </ul>
    </div>

我的 jquery

<script type="text/javascript">
$('.p_over').hover(function(){
    $('.submenu').slideDown(50);        
},
function(){
    $('.submenu').slideUp(50);          
});
</script>

谢谢!

【问题讨论】:

  • 最简单的方法是重组 html,使每个子菜单都在它的父菜单中,但请稍等,我会写一个不重组的方法。

标签: jquery submenu


【解决方案1】:

setTimeout 中创建slideUp 函数,这样如果悬停在子菜单上,您可以清除超时(并停止slideUp)。如果您想在子菜单消失之前让用户有更多时间进入子菜单,只需更改倒数第二行中的250。这是以毫秒为单位的时间量。此时,您所要做的就是根据菜单定位子菜单。

这里是一个很粗糙的DEMO

var t;
$('.p_over, .submenu').on('mouseenter', function(){
    if(t){
        clearTimeout(t);
        t = false;
    }
    $('.submenu').slideDown(50);
}).on('mouseleave', function(){
    t = setTimeout(function(){
        $('.submenu').slideUp(50);
    }, 250);
});

【讨论】:

  • 非常感谢!有用。我只是 jquery 的初学者。你有权说我应该在菜单的 li 中设置我的子菜单。谢谢!
  • 但是,当我从子菜单悬停回到 li 时,子菜单消失了。
  • 只有当我将jquery应用到多个li's时才会出现这个问题
  • 你能告诉我页面的代码还是JsFiddle?可能只是 li 没有填充您悬停的整个 a 元素
猜你喜欢
  • 2017-11-11
  • 1970-01-01
  • 2013-11-16
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多