IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Améliorer un menu fait avec JQuery avec du javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut Améliorer un menu fait avec JQuery avec du javascript
    Bonjour à tous,

    je réalise un site web avec lequel je souhaite avoir un menu glissant. J'ai donc suivi avec succès ce tutoriel : http://dmouronval.developpez.com/tut...ry/menu-anime/ (je remercie d'ailleurs l'auteur au passage!)

    Je l'ai adapté à mes besoins (pas d'images et menus alignés)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <div id="menu">
       <ul>
    	      <li class="aa"><a href="#l">Menu 1</a>
    		   <ul class="aa">
    			<li><a href="#">SMenu 1.1</a></li>
    			<li><a href="#">SMenu 1.2</a></li>
    		   </ul>
    	       </li>
     
    		<li class="bb"><a href="#">Menu 2</a>
    		     <ul class="bb">
    			 <li><a href="#">SMenu 2.1</a></li>
    			 <li><a href="#">SMenu 2.2</a></li>
             	      </ul>
                    </li>
              </ul>
    </div>
    Avec le code javascript suivant pour utiliser JQuery
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $(document).ready(function () {
    	$('#menu li.aa').mouseover(function () {
                    $('#menu li ul.aa').slideDown('medium');
    		 $('#menu li ul.bb').slideUp('medium');
     
        });
     
    	$('#menu li.bb').mouseover(function () {
                    $('#menu li ul.bb').slideDown('medium');
    		 $('#menu li ul.aa').slideUp('medium');
     
        });
    Avec un peu de CSS, je rajoute quelques effets (changer la couleur et le fond du menu et de la case survolés grâce à ':hover'). Ça marche terriblement bien.

    A l'exception que les menus ne remontent pas si je mets mon curseur sur le reste de la page. Ma question est donc :
    - comment faire pour que mes menus remontent lorsque j'ai fini des survoler ?

    Question subsidiaire : j'utilise actuellement la solution palliative
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('body').click(function () {
                    $('#menu li ul.bb').slideUp('medium');
    		 $('#menu li ul.aa').slideUp('medium');
        });
    Mais dans ce cas le surlignage du menu et du sous-menu déployés disparait lorsque je ne les survole plus. J'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if('#menu li ul.bb.display'==visible) ('#menu li.bb.background'='999')
    ... mais cela ne fonctionne pas..
    Comment faire pour le surlignage perdure lorsq'un sous-menu est apparent et que je ne le survole pas ?

    Merci beaucoup de m'avoir lu et merci d'avance pour vos indications!

    Alplob

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    a prt le fait que tu aies oublié le selectuer $ de jQUery pour pointer sur l'élément et que la syntaxe if en js est:
    Tu es sur la bonne voie...
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($('#menu li ul.bb.display')==visible){$('#menu li.bb.background')='999'}
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Merci beaucoup, j'essaie ça dès que je peux!

  4. #4
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    J'ai essayé avec ça (avec 2 = dans la deuxième partie, sinon la console javascript de Firefox n'aime pas...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($('#menu li ul.bb.display')==visible) {$('#menu li.bb.background'=='999');}
    Mais aucun effet, et la console javascript de Firefox me répond :
    visible is not defined


    Avez-vous une idée pour résoudre ce problème ?

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#menu li ul.bb')[0].css('display')
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre régulier
    Inscrit en
    Avril 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 9
    Par défaut
    Merci pour la réponse mais cela ne marche toujours pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($('#menu li ul.bb')[0].css('display')==visible){$('#menu li.bb.background')='999';}
    La console Java de Firefox me renvoie : $('#menu li ul.bb')[0].css is not a function

    Pour info, j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($('#menu li ul.bb')[1].css('display')==visible){$('#menu li.bb.background')='999';}
    -> $('#menu li ul.bb')[1] is undefined

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Article] Créez un menu animé avec jQuery
    Par Kerod dans le forum jQuery
    Réponses: 6
    Dernier message: 10/02/2010, 20h05
  2. Menu déroulant compatible IE6 avec JQuery
    Par Thy974 dans le forum jQuery
    Réponses: 2
    Dernier message: 26/07/2009, 15h39
  3. [Article] Menu déroulant animé avec jQuery
    Par freegreg dans le forum jQuery
    Réponses: 0
    Dernier message: 02/03/2009, 23h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo