简体   繁体   English

悬停时保持子菜单

[英]Persist sub-menu on hover

I am trying to keep my sub-menu appearing when I hover onto it. 当我将鼠标悬停在子菜单上时,我试图使其保持显示状态。 Currently it disappears when I hover off Locations . 目前,当我将鼠标悬停在Locations时,它消失了。

My Demo: http://jsfiddle.net/269yqavo/ 我的演示: http : //jsfiddle.net/269yqavo/

Here is my code: 这是我的代码:

 $('.main a.primary').hover(function(e){ e.preventDefault(); $(this).next().toggle(); }).hover(); 
 .sub-menu {display:none;background:#ccc} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <ul class="sf-menu"> <li class="main"> <a href="" class="primary">Locations</a> <ul class="sub-menu"> <li><a href="/location/athina/" title= "View all posts in Athina">Athina</a></li> <li><a href="/location/beirut/" title= "View all posts in Beirut">Beirut</a></li> </ul> </li> </ul> 

Here's a solution without JS at all. 这是一个完全没有JS的解决方案。 Simply show the sub menu whenever the container is hovered. 只要将容器悬停即可显示子菜单。

http://jsfiddle.net/269yqavo/1/ http://jsfiddle.net/269yqavo/1/

.sub-menu {
    display:none;
    background:#ccc
}

.main:hover .sub-menu {
    display: block;
}

Why not do like this? 为什么不这样呢? The hover function should be used differently. 悬停功能应该以不同的方式使用。 The event should be bound on the parent. 该事件应绑定到父项。

 $('.main a.primary').parent().hover(function(e){ $(this).find("a").next().show(); }, function () { $(this).find("a").next().hide(); }); 
 .sub-menu {display: none; background: #ccc} 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <ul class="sf-menu"> <li class="main"> <a href="" class="primary">Locations</a> <ul class="sub-menu"> <li><a href="/location/athina/" title= "View all posts in Athina">Athina</a></li> <li><a href="/location/beirut/" title= "View all posts in Beirut">Beirut</a></li> </ul> </li> </ul> 

And instead of using JS, you can use CSS alone: 除了使用JS,您还可以单独使用CSS:

 .sub-menu { display: none; background: #ccc } .main:hover .sub-menu { display: block; } 
 <ul class="sf-menu"> <li class="main"> <a href="" class="primary">Locations</a> <ul class="sub-menu"> <li><a href="/location/athina/" title= "View all posts in Athina">Athina</a></li> <li><a href="/location/beirut/" title= "View all posts in Beirut">Beirut</a></li> </ul> </li> </ul> 

Why u do it by simple css? 为什么用简单的CSS做到这一点?

HTML HTML

<ul class="sf-menu">
    <li class="main">
      <a href="" class="primary">Locations</a>

      <ul class="sub-menu">
        <li><a href="/location/athina/" title=
        "View all posts in Athina">Athina</a></li>

        <li><a href="/location/beirut/" title=
        "View all posts in Beirut">Beirut</a></li>

      </ul>
    </li>
  </ul>

CSS CSS

.sub-menu {display:none;background:#ccc}

.main:hover .sub-menu{
    display:block
}

Simple logic here when u do hover on main class sub-menu will show 当您在主类子菜单上悬停时,这里将显示简单逻辑

JSFIDDLE 1 JSFIDDLE 1

OR 要么

$('.sf-menu').children().hover(function(e){
    $(this).find("a").next().show();
}, function () {
    $(this).find("a").next().hide();
});

JSFIDDLE 2 JSFIDDLE 2

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM