login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Waarschijnlijk een eenvoudige oplossing voor?

Offline Woodmen - 08/11/2010 20:38 (laatste wijziging 08/11/2010 20:40)
Avatar van WoodmenNieuw lid Hallo allemaal,

Het volgende script (van internet) gebruik ik om menu's open dicht te laten klappen:
  1. function addEvent(obj, type, fn) {
  2. if( obj.attachEvent ) {
  3. obj["e"+type+fn] = fn;
  4. obj[type+fn] = function(){obj["e"+type+fn]( window.event );};
  5. obj.attachEvent( "on"+type, obj[type+fn] );
  6. } else {
  7. obj.addEventListener( type, fn, true );
  8. };
  9. }
  10.  
  11. function initMenus() {
  12. /*Activate/deactivate menus*/
  13. $$('.smenu').each(function(s,index){
  14. addEvent(s,'click',function(){
  15. if($('smenu'+s.id.replace('a','')).visible()){
  16. //do nothing
  17. } else {
  18. $$('.smenu').each(function(s,index){
  19. if($('smenu'+s.id.replace('a','')).visible()) {
  20. //$('smenu'+s.id).hide(); //Prototype Method
  21. Effect.BlindUp($('smenu'+s.id.replace('a','')), {duration:0.5}); //ScriptAculoUs Method
  22. }
  23. });
  24. //$('smenu'+s.id).show(); //Prototype Method
  25. Effect.BlindDown($('smenu'+s.id.replace('a','')), {duration:0.5}); //ScriptAculoUs Method
  26. }
  27. });
  28. });
  29.  
  30. /*All menu hiden by default*/
  31. $$('.smenu').each(function(s,index){
  32. if($('smenu'+s.id.replace('a','')).visible()) {
  33. $('smenu'+s.id.replace('a','')).hide();
  34. }
  35. });
  36.  
  37. /*effects on menu*/
  38. $$('dl#menu dt').each(function(s,index){
  39. addEvent(s,'mouseout',function(){
  40. new Effect.Highlight(s, {duration:0.5, startcolor:'#ed1c22', endcolor:'#ed1c22', restorecolor
  41. :'#ed1c22'});
  42. });
  43. });
  44. }
  45.  
  46. addEvent(window, 'load', initMenus);


En de html code van het menu zelf:
  1. <dl id="menu">
  2. <dt class="smenu" id="a2"><span>Menu kop</span></dt>
  3. <dd id="smenu1">
  4. <ul>
  5. <li><a href="?pagina=1">1</a></li>
  6. <li><a href="?pagina=2">2</a></li>
  7. <li><a href="?pagina=3">3</a></li>
  8. </ul>
  9. </dd>
  10. </dl>


Dit script werkt prima. Alleen is er een mogelijkheid om bij het bezoeken van een pagina er voor te zorgen dat het menu uitgeklapt blijft?

Alvast bedankt voor jullie.

11 antwoorden

Gesponsorde links
Offline Stijn - 08/11/2010 20:43
Avatar van Stijn PHP expert Werken met cookies 
Offline Martijn - 08/11/2010 21:35
Avatar van Martijn Crew PHP volgens mij doe je echt veel te lastig... je hebt als jQuery, en dan zoveel code.... Dit kan echt vele vele male makkelijker

ik denk dat je wat meer moet kijken naar de eventlisteners van jQuery, tevens animate, slidedown(), slideup().

En dan kun je met een makkelijke GET ajax of cookies doen wat je wilt doen
Offline Kevin - 08/11/2010 21:43
Avatar van Kevin Crew Ajax/REST Aanvullend op Martijn, gebruik de toggle functie met daarin een slidedown en slideup statement.
Offline Woodmen - 08/11/2010 22:46 (laatste wijziging 08/11/2010 23:52)
Avatar van Woodmen Nieuw lid Nog even wat eenvoudigs zitten maken. Denk dat jullie dit bedoelen alleen dan nog zonder de cookies...

  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3.  
  4. //Standaard niet laten zien
  5. $(".link").hide();
  6.  
  7. //Door op dt met class kop te klikken het geselecteerde menu langzaam openen
  8. $("dt.kop").click(function(){
  9. $(this).toggleClass("active").next().slideToggle("slow").siblings("dd.link").slideUp("slow");
  10. return false;
  11. });
  12.  
  13. });
  14.  
  15. </script>
  16.  
  17. </head>
  18.  
  19. <body>
  20. <div id="left">
  21. <div id="menus">
  22. <dl id="menu">
  23. <dt class="kop"><span>Kop</span></dt>
  24. <dd class="link">
  25. <ul>
  26. <li><a href="#">1</a></li>
  27. <li><a href="#">2</a></li>
  28. <li><a href="#">3</a></li>
  29. </ul>
  30. </dd>
  31. <dt class="kop"><span>Kop2</span></dt>
  32. <dd class="link">
  33. <ul>
  34. <li><a href="#">1</a></li>
  35. <li><a href="#">2</a></li>
  36. <li><a href="#">3</a></li>
  37. </ul>
  38. </dd>
  39. </dl>
  40. </div>
  41. </div>




Edit: dit script werkt bij mij goed. Toch bedankt voor onderstaande opmerking 
Offline Kevin - 08/11/2010 22:58
Avatar van Kevin Crew Ajax/REST Als je slideToggle() gaat gebruiken, wees dan zeker dat je jQuery v1.4.3 hebt (de laatste nieuwe), want deze functie is pas dan geimplementeerd geweest.
Offline Woodmen - 08/11/2010 23:57 (laatste wijziging 08/11/2010 23:57)
Avatar van Woodmen Nieuw lid Bovenstaand script is inderdaad veel eenvoudiger. Met de cookies komt het echter nog niet echt van de grond. Zou iemand mij op het juiste spoor kunnen zetten, of eventueel een suggestie kunnen geven hoe te beginnen?

Alvast bedankt maar weer 
Offline WeedSide - 09/11/2010 08:16
Avatar van WeedSide Nieuw lid http://www.dyna...nuheader=1

Zit alles al in verwerkt, weinig zin om je code door te spitten en iets te maken wat al bestaat.  

Greetz WeedSide  
Offline Aar - 09/11/2010 08:33
Avatar van Aar PHP interesse Wisselvalig topic...

Iemand komt met een ranzig script, iemand komt met een jQuery script die makkelijker in gebruik is, en nu komt er weer iemand aan met een non-jQuery script...

Offline WeedSide - 09/11/2010 08:35
Avatar van WeedSide Nieuw lid @Aar, ligt er maar aan waar je voorkeur naar uit gaat. Zoals ik al zei ik ga niet het wiel opnieuw uitvinden.  

Greetz WeedSide 
Offline Woodmen - 10/11/2010 08:45
Avatar van Woodmen Nieuw lid Goedemorgen,

Het is dus makkelijker een kant en klaar jguery script te zoeken i.p.v. deze aan te passen?
Offline WeedSide - 10/11/2010 11:26
Avatar van WeedSide Nieuw lid Ik zoek meestal met dit soort dingen inderdaad een al gemaakt script wat aan me eisen voldoet. Maar wil je een uitdaging kun je zelf een script proberen te maken cq aanpassen.

Greetz WeedSide 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.23s