2010-08-18 4 views
1

Comment puis-je faire en sorte que toutes mes listes imbriquées se réduisent et se développent lorsque je clique dessus.Side Nav Menu Question

Voici mon xHTML.

<ul> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a> 
     <ul> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a> 
      <ul> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a> 
       <ul> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       </ul> 
      </li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      </ul> 
     </li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     </ul> 
    </li> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a></li> 
</ul> 

Répondre

4

Je ne sais pas exactement ce que vous êtes après, mais le concept général ressemble à ceci:

$("li").click(function(e) { 
    $(this).children('ul').toggle(400); //toggle the immediate child <ul> 
    return false; //stop the click from bubbling up, and the href working 
}); 

You can give it a try with your markup here.

1

Ce plugin jQuery est peut-être ce que vous cherchez: http://docs.jquery.com/Plugins/Treeview

Votre code ressemblera à quelque chose comme ça ...

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    <link rel="stylesheet" href="http://dev.jquery.com/view/trunk/plugins/treeview/demo/screen.css" type="text/css" /> 
    <link rel="stylesheet" href="http://dev.jquery.com/view/trunk/plugins/treeview/jquery.treeview.css" type="text/css" /> 
    <script type="text/javascript" src="http://dev.jquery.com/view/trunk/plugins/treeview/jquery.treeview.js"></script> 
    <script> 
    $(document).ready(function(){ 
    $("#example").treeview(); 
    }); 
    </script> 

</head> 
<body> 
<ul id="example" class="filetree"> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a> 
     <ul> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a> 
      <ul> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a> 
       <ul> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       </ul> 
      </li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      </ul> 
     </li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     </ul> 
    </li> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a></li> 
</ul> 
</body> 
</html> 

Il existe différents styles disponibles en fonction de la classe que vous appelez Donc, regardez ces démos et choisissez celle que vous préférez: http://view.jquery.com/trunk/plugins/treeview/demo/

0

Comme pour d'autres idées, j'ai rassemblé quelque chose comme ça comme un brouillon:

  $(".nav ul").hide(); 
      $(".nav li").click(function(){ 
       if ($(this).children("ul").length > 0) { 
        $(this).children("ul").toggle(); 
        return false; 
       } 
       return true; 
      }); 

Dans mon exemple, j'ajouté la classe « nav » à l'extérieur le plus ELU ul pour éviter tout conflit avec d'autres possibles sur la page:

 <ul class="nav"> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a> 
     <ul> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a> 
      <ul> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a> 
       <ul> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       <li><a href="some-link.php">Fourth Nested List</a></li> 
       </ul> 
      </li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      <li><a href="some-link.php">Third Nested List</a></li> 
      </ul> 
     </li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     <li><a href="some-link.php">Second Nested List</a></li> 
     </ul> 
    </li> 
    <li><a href="some-link.php">First Nested List</a></li> 
    <li><a href="some-link.php">First Nested List</a></li> 
</ul> 
+0

Je ne peux pas obtenir que cela fonctionne avec mon code :( – synonyms

+0

Droit - j'ai oublié une classe à l'extérieur le plus ul - voir ma mise à jour :-) – brendan

+0

ne peut toujours pas le faire fonctionner :( – synonyms