Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS]Wysuwane menu, po kliknięciu
Forum PHP.pl > Forum > Przedszkole
KomputeromaniaK
Mam taki kod:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <title>jQuery Simple Drop Down Menu v0.25</title>
  3. <meta name="keywords" content="" />
  4. <meta name="description" content="" />
  5.  
  6.  
  7. </head>
  8. <style type="text/css">
  9. /* menu styles */
  10. body {
  11. background-color: black;
  12. }
  13. #jsddm
  14. { margin: 0;
  15. padding: 0}
  16.  
  17. #jsddm li
  18. { float: left;
  19. list-style: none;
  20. font: 12px Tahoma, Arial;
  21. }
  22.  
  23. #jsddm li a
  24. { display: block;
  25. background: #d6c18e;
  26. padding: 5px 12px;
  27. text-decoration: none;
  28. border: 1px solid white;
  29. color: #000;
  30. white-space: nowrap}
  31.  
  32. #jsddm li a:hover
  33. { background: #edd69f}
  34.  
  35. #jsddm li ul
  36. { margin: 0;
  37. padding: 0;
  38. position: absolute;
  39. visibility: hidden;
  40. }
  41.  
  42. #jsddm li ul li
  43. { float: none;
  44. display: inline}
  45.  
  46. #jsddm li ul li a
  47. { width: auto;
  48. background: #d6c18e;
  49. color: #000}
  50.  
  51. #jsddm li ul li a:hover
  52. { background: #f6dea5}
  53.  
  54. <script src="jquery.min.js" type="text/javascript"></script>
  55. <script type="text/javascript">
  56. var timeout = 500;
  57. var closetimer = 0;
  58. var ddmenuitem = 0;
  59.  
  60. function jsddm_open()
  61. { jsddm_canceltimer();
  62. jsddm_close();
  63. ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');}
  64.  
  65. function jsddm_close()
  66. { if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}
  67.  
  68. function jsddm_timer()
  69. { closetimer = window.setTimeout(jsddm_close, timeout);}
  70.  
  71. function jsddm_canceltimer()
  72. { if(closetimer)
  73. { window.clearTimeout(closetimer);
  74. closetimer = null;}}
  75.  
  76. $(document).ready(function()
  77. { $('#jsddm > li').bind('mouseover', jsddm_open);
  78. $('#jsddm > li').bind('mouseout', jsddm_timer);});
  79.  
  80. document.onclick = jsddm_close;
  81.  
  82. <ul id="jsddm">
  83. <li><a href="#">test</a>
  84. <ul>
  85. <li><a href="#">Link</a></li>
  86. <li><a href="#">Link</a></li>
  87. <li><a href="#">Link</a></li>
  88. <li><a href="#">Link</a></li>
  89. <li><a href="#">Link</a></li>
  90. </ul>
  91. </li>
  92. </ul>
  93. </body>
  94. </html>


I jak zrobić, aby menu rozwijało się po kliknięciu,a nie po najechaniu?
Od razu mówię, że jestem całkiem zielony w JS
Skie
Prawdopodobnie zamiast tego:

Kod
$('#jsddm > li').bind('mouseover', jsddm_open);


to:

Kod
$('#jsddm > li').bind('click', jsddm_open);
bastard13
W tym fragmencie zamień mouseover na click
  1. $(document).ready(function()
  2. { $('#jsddm > li').bind('mouseover', jsddm_open);
  3. $('#jsddm > li').bind('mouseout', jsddm_timer);});
KomputeromaniaK
Myśląc logicznie każdy by chyba tak zrobił, właśnie tak wcześniej robiłem i nie zadziałało i dlatego napisałem an forum ;/


Ps: Sprawdzałem też: onclick, mouseclick, clicks
IceManSpy
A nie lepiej po prostu zrobić to w jQuery z opcją np slidetoggle? Dzięki temu możesz chować i pokazywać menu. Tutaj masz przykład: http://api.jquery.com/slideToggle/
KomputeromaniaK
Ale nie rozumiesz mnie, zobacz to:
Kod
http://m2fp.komputeromaniak.com.pl

Login: test2
Haslo: tescior

I tam masz Witaj, test2
i jak zrobię to twoim sposobem to mi się całe to będzie rozsuwać, a chcę żeby po kliknięciu było tak jak jest teraz po najechaniu
zegarek84
2 rzeczy - a w zasadzie 3 ;p:
  1. fajnie, żeś dał kod tak, że można pobrać gotową stronę odrazu - ale zapomniałeś o adresie bezwzględnym [całym] do jquery - mniej roboty by było
  2. nie dawaj więcej takich kwiatków na końcu skryptu jak document.onclick bom sam przez chwilę "zgłupiał" zanim to zauważyłem
  3. a jak już kożystasz z jquery to zamiast over i out urzywaj leave i enter ;D - niżej masz działający kod - poprzednicy w zasadzie dobrą odpowiedź podawali a nie widzieli kwiatka ;p

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <title>jQuery Simple Drop Down Menu v0.25</title>
  3. <meta name="keywords" content="" />
  4. <meta name="description" content="" />
  5.  
  6.  
  7. </head>
  8. <style type="text/css">
  9. /* menu styles */
  10. body {
  11. background-color: black;
  12. }
  13. #jsddm
  14. { margin: 0;
  15. padding: 0}
  16.  
  17. #jsddm li
  18. { float: left;
  19. list-style: none;
  20. font: 12px Tahoma, Arial;
  21. }
  22.  
  23. #jsddm li a
  24. { display: block;
  25. background: #d6c18e;
  26. padding: 5px 12px;
  27. text-decoration: none;
  28. border: 1px solid white;
  29. color: #000;
  30. white-space: nowrap}
  31.  
  32. #jsddm li a:hover
  33. { background: #edd69f}
  34.  
  35. #jsddm li ul
  36. { margin: 0;
  37. padding: 0;
  38. position: absolute;
  39. visibility: hidden;
  40. }
  41.  
  42. #jsddm li ul li
  43. { float: none;
  44. display: inline}
  45.  
  46. #jsddm li ul li a
  47. { width: auto;
  48. background: #d6c18e;
  49. color: #000}
  50.  
  51. #jsddm li ul li a:hover
  52. { background: #f6dea5}
  53.  
  54. <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
  55. <script type="text/javascript">
  56. var timeout = 500;
  57. var closetimer = 0;
  58. var ddmenuitem = 0;
  59.  
  60. function jsddm_open()
  61. { jsddm_canceltimer();
  62. jsddm_close();
  63. ddmenuitem = $(this).find('ul').eq(0).css('visibility', 'visible');}
  64.  
  65. function jsddm_close()
  66. { if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}
  67.  
  68. function jsddm_timer()
  69. { closetimer = window.setTimeout(jsddm_close, timeout);}
  70.  
  71. function jsddm_canceltimer()
  72. { if(closetimer)
  73. { window.clearTimeout(closetimer);
  74. closetimer = null;}}
  75.  
  76. $(document).ready(function()
  77. { $('#jsddm > li').bind({'click':jsddm_open,'mouseleave':jsddm_timer,'mouseenter':jsddm_canceltimer});})
  78. // $('#jsddm > li').bind('mouseleave', jsddm_timer);});
  79.  
  80. //document.onclick = jsddm_close;
  81.  
  82. <ul id="jsddm">
  83. <li><a href="#">test</a>
  84. <ul>
  85. <li><a href="#">Link</a></li>
  86. <li><a href="#">Link</a></li>
  87. <li><a href="#">Link</a></li>
  88. <li><a href="#">Link</a></li>
  89. <li><a href="#">Link</a></li>
  90. </ul>
  91. </li>
  92. </ul>
  93. </body>
  94. </html>

nie zauważyłem, że po mouseenter chcesz kasować ukrywanie...
KomputeromaniaK
Dobra, ale teraz jak kliknę spowrotem w test to nie znika sad.gif
zegarek84
Cytat(KomputeromaniaK @ 22.08.2010, 09:14:05 ) *
Dobra, ale teraz jak kliknę spowrotem w test to nie znika sad.gif
efekt miał być inny ;p - nic o tym nie pisałeś - śmieci nie czyściłem, a jak ktoś zaczyna od framworków zamiast od podstaw to tak jest, że potem nie wie się jak napisać prostu routing przy zdarzeniach ;p - teraz masz że po kliknięciu się pokazuje i chowa - jak zjedzie się myszką to nic się nie dzieje...
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <title>jQuery Simple Drop Down Menu v0.25</title>
  3. <meta name="keywords" content="" />
  4. <meta name="description" content="" />
  5.  
  6.  
  7. </head>
  8. <style type="text/css">
  9. /* menu styles */
  10. body {
  11. background-color: black;
  12. }
  13. #jsddm
  14. { margin: 0;
  15. padding: 0}
  16.  
  17. #jsddm li
  18. { float: left;
  19. list-style: none;
  20. font: 12px Tahoma, Arial;
  21. }
  22.  
  23. #jsddm li a
  24. { display: block;
  25. background: #d6c18e;
  26. padding: 5px 12px;
  27. text-decoration: none;
  28. border: 1px solid white;
  29. color: #000;
  30. white-space: nowrap}
  31.  
  32. #jsddm li a:hover
  33. { background: #edd69f}
  34.  
  35. #jsddm li ul
  36. { margin: 0;
  37. padding: 0;
  38. position: absolute;
  39. visibility: hidden;
  40. }
  41.  
  42. #jsddm li ul li
  43. { float: none;
  44. display: inline}
  45.  
  46. #jsddm li ul li a
  47. { width: auto;
  48. background: #d6c18e;
  49. color: #000}
  50.  
  51. #jsddm li ul li a:hover
  52. { background: #f6dea5}
  53.  
  54. <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script>
  55. <script type="text/javascript">
  56. var timeout = 500;
  57. var closetimer = 0;
  58. var ddmenuitem = 0,
  59. open = false;
  60. function rout(){open?jsddm_close():jsddm_open(this);}
  61.  
  62. function jsddm_open(el)
  63. {
  64. open=true;
  65. jsddm_canceltimer();
  66. //jsddm_close();
  67. ddmenuitem = $(el).find('ul').eq(0).css('visibility', 'visible');}
  68.  
  69. function jsddm_close()
  70. {
  71.  
  72. if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');
  73. open=false;}
  74.  
  75. function jsddm_timer()
  76. { closetimer = window.setTimeout(jsddm_close, timeout);}
  77.  
  78. function jsddm_canceltimer()
  79. { if(closetimer)
  80. { window.clearTimeout(closetimer);
  81. closetimer = null;}}
  82.  
  83. $(document).ready(function()
  84. { $('#jsddm > li').bind('click',rout);})
  85. // $('#jsddm > li').bind('mouseleave', jsddm_timer);});
  86.  
  87. //document.onclick = jsddm_close;
  88.  
  89. <ul id="jsddm">
  90. <li><a href="#">test</a>
  91. <ul>
  92. <li><a href="#">Link</a></li>
  93. <li><a href="#">Link</a></li>
  94. <li><a href="#">Link</a></li>
  95. <li><a href="#">Link</a></li>
  96. <li><a href="#">Link</a></li>
  97. </ul>
  98. </li>
  99. </ul>
  100. </body>
  101. </html>

KomputeromaniaK
Ja się nie chce uczyć na razie js, tylko zrobić to głupie menu ;p

Na razie chce opanować dobrze php


@Dzieki działa ;*
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.