Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery]Rozwijane menu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
sirostr
Mam takie rozwijane menu:
  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>menu jquery</title>
  7. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
  8. <script type="text/javascript">
  9. $(document).ready(
  10. function()
  11. {
  12. $("#show1").click(
  13. function(){
  14. $("#menu1").toggle("normal");
  15. }
  16. ).toggle(function(){$(this).css('padding-bottom','3px');},function(){$(this).css('padding-bottom','0px');});
  17.  
  18. $("#show2").click(
  19. function(){
  20. $("#menu2").toggle("normal");
  21. }
  22. ).toggle(function(){$(this).css('padding-bottom','3px');},function(){$(this).css('padding-bottom','0px');});
  23.  
  24. $("#show3").click(
  25. function(){
  26. $("#menu3").toggle("normal");
  27. }
  28. ).toggle(function(){$(this).css('padding-bottom','3px');},function(){$(this).css('padding-bottom','0px');});
  29.  
  30. $("#show-all").click(
  31. function(){
  32. $(".nav ul").toggle("normal");
  33. }
  34. ).toggle(function(){$(this).attr('value','Zwiń wszystko');},function(){$(this).attr('value','Rozwiń wszystko');});
  35.  
  36. });
  37. </script>
  38. </head>
  39. <div id="side">
  40. <h2>Menu <input type="submit" id="show-all" value="Rozwiń wszystko" style="position:relative; top: -4px;" /></h2>
  41. <div class="nav">
  42. <h3><a href="#" id="show1">Tytuł</a></h3>
  43. <ul style="display:none" id="menu1">
  44. <li><a href="#">Link #1</a></li>
  45. <li><a href="#">Link #2</a></li>
  46. <li><a href="#">Link #3</a></li>
  47. <li><a href="#">Link #4</a></li>
  48. <li><a href="#">Link #5</a></li>
  49. </ul>
  50. </div>
  51.  
  52. <div class="nav">
  53. <h3><a href="#" id="show2">Tytuł</a></h3>
  54. <ul style="display:none" id="menu2">
  55. <li><a href="#">Link #1</a></li>
  56. <li><a href="#">Link #2</a></li>
  57. <li><a href="#">Link #3</a></li>
  58. <li><a href="#">Link #4</a></li>
  59. <li><a href="#">Link #5</a></li>
  60. </ul>
  61. </div>
  62.  
  63. <div class="nav">
  64. <h3><a href="#" id="show3">Tytuł</a></h3>
  65. <ul style="display:none" id="menu3">
  66. <li><a href="#">Link #1</a></li>
  67. <li><a href="#">Link #2</a></li>
  68. <li><a href="#">Link #3</a></li>
  69. <li><a href="#">Link #4</a></li>
  70. <li><a href="#">Link #5</a></li>
  71. </ul>
  72. </div>
  73. </body>
  74. </html>

Problem w tym, że kiedy kliknę na 'Rozwiń wszystko', a a któreś menu jest już otwarte, to ono się zamyka, i na odwrót.
Oczywiscie mógłbym w CSS napisać że to ma display:none, a potem tylko css('display','block') ale to nie ma takiego efektu.
snapshot
  1. Popraw styl pisania w jQuery...
  2. Nie wal do jQuery css. Jak już to addClass i w css definuj.
  3. Używaj val()
  4. The write less, do more winksmiley.jpg
A tu masz poprawiony kod. Jak coś nie jasne to pytaj.
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.  
  4. $("h3 a").click(function(){
  5. $(this).parent().next().toggle("normal");
  6. });
  7.  
  8. $("#show-all").toggle(function(){
  9. $(this).val('Zwiń wszystko');
  10. $(".nav ul").show("normal");
  11. }, function(){
  12. $(this).val('Rozwiń wszystko');
  13. $(".nav ul").hide("normal");
  14. });
  15. });
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.