3

我有一个带有 jquery click() 函数和 toggle() 的简单菜单/子菜单。我的问题是,toggle() 工作正常,但是当例如#submenu1 打开时,我单击“菜单 2”,#submenu1 当然仍然可见,并且两个子菜单重叠。所以我需要一个 hide() 子菜单,但我没有得到它的工作!我尝试了 not()、siblings() 没有成功。任何帮助表示赞赏!提前致谢。

jQuery:

$('#menu li').click(function() {
$('div', this).stop(true, true).animate({ 'height': 'toggle' }, 300);
 });

HTML:

<ul id="menu">
   <li><a href="#">Menu 1</a>
       <div id="submenu1">
           <ul>
              <li>Submenu 1</li>
           </ul>
       </div>
   </li>
   <li><a href="#">Menu 2</a>
       <div id="submenu2">
           <ul>
              <li>Submenu 2</li>
           </ul>
       </div>
   </li>
</ul>

CSS:

#submenu1, #submenu2 {
z-index: 99;
position: absolute;
background: #6fb700;
display: none;
}
4

4 回答 4

1

试试:http: //jsfiddle.net/D9pq8/

$('#menu li').click(function () {
   $(this).siblings().children('div').hide();
   $('div', this).stop(true, true).animate({ 'height': 'toggle' }, 300);
});
于 2013-01-30T14:12:31.703 回答
0

试试这个

编辑以缩短版本

$("#menu li").click(function() {
    if($('div' , this).css('display') != 'block')
            $("#menu li div.active").hide().removeClass('active');

      $('div', this).addClass('active').stop(true, true).animate({ 'height': 'toggle' }, 300);  
});

小提琴示例

这是您的菲德尔示例

于 2013-01-30T13:33:33.050 回答
0

尝试使用 jquery 选项卡执行此操作。垂直模式下的主菜单和默认模式下的子菜单 EX:选项卡 UI

于 2013-01-30T13:47:19.463 回答
0

扩展@silagy 发布的内容:

 $('#menu li').click(function() {
     $("#menu li div.active").hide().removeClass('active');
    $('div', this).addClass('active').stop(true, true).animate({ 'height': 'toggle' }, 300);
});

这只是添加了一个“活动”类,因此没有双重动画菜单项。

于 2013-01-30T13:51:53.027 回答