2009-07-25 7 views
0

chaque plugin jQuery que j'ai trouvé est basé sur <li> éléments pour générer les éléments de menu.jQuery menu personnalisé

Je élément <div id = "menubutton"> qui représente le menu bouton et un autre, non liée (maning ce n'est pas un enfant) <div id = "menucontent"> qui contient les éléments de menu (substance mixte, images, etc.). Je veux que cette seconde div cachée apparaisse quand je clique sur le bouton. il devrait se cacher quand je laisse le bouton OU quand je laisse le contenu div, au cas où je choisis des articles ou fais des choses là. Maintenant, c'est le code que j'ai jusqu'à présent, mais la chose clearTimeout ne semble pas fonctionner. De l'aide? Montrer un plugin pour aider mon travail fonctionnerait aussi bien.

Merci!

 var timer; 

     $('#menubutton').click(function() { 
      $('#menucontent').show(); 
     }); 

     $('#menubutton').mouseout(function() { 
      timer = setTimeout('$("#menucontent").hide()', 500); 
     }); 


     $('#menucontent').mouseover(function() { 
      clearTimeout(timer); 
     }).mouseout(function() { 
      setTimeout('$("#menucontent").hide()', 300); 
     }); 

EDIT SOLUTION

Je résolu le problème en utilisant hover insted de mouseover/mouseout

+0

pourquoi voudriez-vous le faire fonctionner pour laisser le bouton ou le contenu div? Ce serait ennuyeux si vous étiez coincé entre les deux frontières et la merde commence à disparaître sans raison. L'un ou l'autre, pas les deux. Ce script génère-t-il des erreurs dans la console d'erreurs? – Sneakyness

+0

aucune erreur sur la console. btw, si je un le menu, ne le crois pas et passe juste sur un autre bouton, il resterait ouvert. C'est juste la façon dont les menus standards fonctionnent, je pense que – pistacchio

Répondre

0

Essayez ceci:

$('#menubutton').click(function() { 
     $('#menucontent').show(); 
    }); 

    $('#menubutton').mouseout(function() { 
     $(this).data('myTimer', setTimeout('$("#menucontent").hide()', 500)); 
    }); 

    $('#menucontent').mouseover(function() { 
     clearTimeout($(this).data('myTimer')); 
    }).mouseout(function() { 
     setTimeout('$("#menucontent").hide()', 300); 
    }); 
+0

merci pour l'entrée mais non, même résultat qu'avant :( – pistacchio

+0

Intéressant Dans ce cas, je vous recommande d'ajouter quelques visuels de débogage afin que vous puissiez voir exactement ce qui est appelé quand, comme une boîte verte qui montre quand le mouseout de menubutton arrive, un rouge pour le mouseover menubontent, un bleu pour le mouseout menubontent, etc. Quelque chose ne se passe pas de la manière que vous attendez ... – chaos