Adam Studenic
Adam Studenic

Reputation: 2125

jquery show/hide submenu -> Hide one submenu if other was clicked

I need to close a submenu and open a new one if some other submenu was clicked, it means I do not want more than one submenu opened at a time. However all of the submenus should be able to close.

Here is my jquery script:

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

And 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>

Upvotes: 1

Views: 14691

Answers (3)

Emanuel Lima
Emanuel Lima

Reputation: 19

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");
        }
);

Upvotes: 1

Nick Fury
Nick Fury

Reputation: 1313

I don't know exactly what you're looking for, if you'd care to elaborate a little more I may be able to improve my answer.

Here's the jsfiddle example

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');
    });
});​

Upvotes: 2

Snake Eyes
Snake Eyes

Reputation: 16764

Maybe want like this ( I gave you example) -> 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>

and javascript

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

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

Upvotes: 4

Related Questions