【问题标题】:close open submenu when hover over another menu将鼠标悬停在另一个菜单上时关闭打开的子菜单
【发布时间】:2012-02-28 10:26:33
【问题描述】:

我有一个菜单,里面有一个子菜单。当您将鼠标悬停在主菜单上时,将打开子菜单。当您单击子菜单时,子菜单保持打开状态,因为它被赋予了“on”类。我想要的是,如果用户将鼠标悬停在另一个主菜单部分上,则子菜单会在下面的一个上关闭并在他们悬停的那个上打开。

 <div class="sideMenu2">
    <ul>
        <li><a href>retail</a>
             <ul class="subsideMenu2">
               <li><a href="/portfolio/8/0">the elements</a></li>
               <li><a href="/portfolio/9/0">bullring</a></li>
               <li><a href="/portfolio/10/0">braehead</a></li>
             </ul>
        </li>
        <li ><a href class="on">sports &amp; leisure</a>
               <ul class="subsideMenu2">
                      <li class= "on"><a href="/portfolio/19/0">the rose bowl</a></li>
                           <li><a href="/portfolio/48/0">alton towers pool</a></li>
               </ul>
        </li></ul>

CSS:

.sideMenu ul li.on a
{
    height:2em;
    padding-top: 2px;
    background:url(../images/point.png) no-repeat;
    font-weight:bold;   
}

.sideMenu ul
{    
    padding: 15px 0px 0px 0px;  
    list-style-type:none;
    font-size:1em;
    width:20em;
    color:#fff;   
    margin-left:-10px;
}

.sideMenu ul a{
    padding: 2px 20px 0px 0px;  
    color:#fff;
    text-decoration:none;
    float:left;
    width:19.2em;
}

.sideMenu li a
{
    height:2em;
    padding-top: 1px;
    padding-left:15px;
}

.sideMenu li a:hover{
    background:url(../images/point.png) no-repeat;
    cursor:pointer; 
    padding-left:-15px;
}

.sideMenu h4{
    display:none;
}

.sideMenu2 ul li.on a
{
    height:2em;
    padding-top: 2px;   
/** font-weight:bold;   **/
}

a.on 
{    
   background:url(../images/point.png) no-repeat;
}

.sideMenu2 ul
{    
    padding: 15px 0px 0px 0px;  
    list-style-type:none;
    font-size:1.1em;

    color:#fff;   
    margin-left:-10px;
}

.sideMenu2 ul a{
    padding: 2px 20px 0px 0px;  
    color:#fff;
    text-decoration:none;
    float:left;
    width:16.6em;
}

.sideMenu2 li a
{
    height:2em;
    padding-top: 1px;
    padding-left:15px;
}

.sideMenu2 li a:hover{
    background:url(../images/point.png) no-repeat;
    cursor:pointer; 
    padding-left:-15px;

}

.sideMenu2 ul ul
{    
    display:none;
}
.sideMenu2 li:hover .subsideMenu2 {
  display: block;
}

.sideMenu2 li .subsideMenu2 {
  padding: 15px 0px 0px 20px;   
    list-style-type:none;
    font-size:0.8em;
    width:20em;
    color:#fff;   
    margin-left:-10px; 
}

.sideMenu2 li .subsideMenu2 li.on a
{
    height:2em;
    padding-top: 2px;
    background:url(../images/point.png) no-repeat;
/** font-weight:bold;**/    
    display:block;
}

http://jsfiddle.net/uzi002/LSZBg/9/

【问题讨论】:

  • 效果如何?通过 CSS 或 Jquery?向我们提供执行您所说的悬停效果的代码,以便我们可以更好地为您提供可以提供帮助的答案,因为有几种方法可以使用 CSS 和/或 Jquery 的各种方法或两者的组合来实现翻转/悬停效果。
  • 在提问时考虑使用 jsfiddle.net。它确实可以帮助人们快速创建有效的解决方案。
  • 编写你在 jsfiddle 中的代码,这会给我们一些工作。

标签: jquery css


【解决方案1】:

您需要确保为您的菜单项指定了一个类别。不要使用.sideMenu ul li,而是使用li.main_menu_item 或其他东西:

$(function() {
   $('li.main_menu_item').hover(function() {
      // Hide all open sub-menus
      $('li.main_menu_item').removeClass('on');

      // Show only this menu item's sub-menu
      $(this).addClass('on');
   });
});

【讨论】:

    【解决方案2】:

    您可以将悬停事件与一个函数绑定,该函数在所有具有“on”类的项目上循环并使用 jquery 将其删除,您可以使用“this”对象设置当前悬停项目以将其项目设置为“on” ",如果你发布了你用来做这个菜单的javascript,我可以帮你做,或者你可以把代码示例放在fiddler上

    【讨论】:

    • 我使用了 css,然后如果用户停止悬停,这意味着需要将 on 类重新绑定到 ti 是从哪里取下来的?
    • 对不起,我不知道你的问题是什么意思
    猜你喜欢
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多