jquery show / hide子菜单 - >如果单击其他子,则隐藏一个子菜单

时间:2012-08-10 12:36:44

标签: jquery

如果单击其他子菜单,我需要关闭子菜单并打开一个子菜单,这意味着我不希望一次打开多个子菜单。但是所有的子菜单都应该能够关闭。

这是我的jquery脚本:

<script> 
  $('.show_hide').hide();
  $("li:has(ul)").click(function(){
  $("ul",this).toggle('slow');
  });
</script>

和html:

 <ul id="left-menu" class="menu-v">
   <li> 
     <a>Menu</a>
     <ul class="menu-v show_hide">
       <li>
         <a >submenu </a>
       </li>
       <li>
         <a >submenu 2</a>
       </li>
    </ul>
  </li>
</ul>

3 个答案:

答案 0 :(得分:3)

也许想这样(我举了你的例子) - &gt; http://jsfiddle.net/7qyE9/3/

HTML:

 <ul>
     <li class="main-menu">
         <span>Test</span>
         <ul class="submenu">
             <li>Item1</li>
             <li>Item2</li>
         </ul>
     </li>

     <li class="main-menu">
         <span>Abcde</span>
         <ul class="submenu">
             <li>Item3</li>
             <li>Item4</li>
         </ul>
     </li>
</ul>

和javascript

$(document).ready(function(){
    $(".main-menu .submenu").hide();

    $(".main-menu span").click(function(){
        $(".main-menu .submenu").hide('fast');
        $(this).parent().find("ul").toggle('fast');
    });
});

答案 1 :(得分:2)

我不确切地知道你在寻找什么,如果你想再详细说明一点,我可以改进我的答案。

这是jsfiddle示例

<强> HTML

<ul id="left-menu" class="menu-v">
     <li>
        <ul class="show_hide">
           <li>
             <a >submenu </a>
          </li>
          <li>
             <a >submenu 2</a>
          </li>
        </ul>
    </li>
    <li>
       <ul class="show_hide">
          <li>
             <a >submenu 4</a>
          </li>
          <li>
             <a >submenu 5</a>
          </li>
       </ul>
    </li>
 </ul>​

<强> JQUERY

$(document).ready(function() {
    $('.show_hide').hide();
    $("li:has(ul)").click(function() {
        $("ul", this).toggle('slow');
    });
});​

答案 2 :(得分:1)

HTML

<ul>
    <li><a>0 Level menu<a></li>
    <li><a>0 Level menu<a></li>
    <li><a>0 Level menu<a></li>
    <li class="parentMenu">
        <ul>
            <li class="alwaysShow"><a>0 Level menu<a><li>
            <li class="hidden"><a>1 Level menu<a><li>
            <li class="hidden"><a>1 Level menu<a><li>
            <li class="hidden"><a>1 Level menu<a><li>
        </ul>
    </li>
</ul>

JQUERY

$(".parentMenu").hover(
        function () {
            $(this).find(".hidden").show("100");
        },
        function () {
            $(this).find(".hidden").hide("100");
        }
);