jQuery:我需要一个自定义hide()来切换菜单

时间:2013-01-30 13:29:31

标签: jquery

我有一个带有jquery click()函数和toggle()的简单菜单/子菜单。 我的问题是,toggle()工作正常,但是对于例如#submenu1打开,我点击“菜单2”,#submenu1当然仍然可见,两个子菜单重叠。 所以我需要一个子菜单的hide(),但我不能让它工作!我试过没有(),兄弟姐妹()没有成功。任何帮助表示赞赏!提前谢谢。

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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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);  
});

Fiddle Example

This is your fiddel example

答案 2 :(得分:0)

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

答案 3 :(得分:0)

扩展@silagy发布的内容:

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

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