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

jQuery Discussion :

Faire disparaître un sous menu


Sujet :

jQuery

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Faire disparaître un sous menu
    Bonjour tout le monde,

    Voici le code HTML renvoyé via FireBug :
    Code html : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <ul id="menu-deroulant">
            <li>
                            <a id="liste_article" href="#">
                    Les articles
                </a>
            </li>
            <li>
                            <a id="liste_categories_article" href="#">
                    Les catgégories
                </a>
                <div class="resultat_recherche">
            <ul>
                        <li class="li_categ"> <a href="#"> Présentation <input type="hidden" value="11"> </a> </li>
                        <li class="li_categ"> <a href="#"> Tutoriel <input type="hidden" value="13"> </a> </li>
                        <li class="li_categ"> <a href="#"> Evenements <input type="hidden" value="14"> </a> </li>
                </ul>
    </div>
            </li>
            <li>
                            <a id="liste_tags_article" href="#">
                    Les tags
                </a>
                <div class="resultat_recherche">
                </div>
            </li>
        </ul>

    Ensuite ce que je veux faire c'est par exemple :
    1) je passe la souris sur le menu "Les catégories", la les sous-menus correspondant("Présentation", "Tutoriel", "Evenements") s'affiche:cela fonctionne bien ^^

    2 a) Quand je click sur un sous-menu, les informations des articles correspondant s'affiche: cela fonctionne plutôt bien aussi je pense(le "je pense" vous allez sans doute le comprendre par la suite^^).

    2 b)Par contre imaginons j'ai fait la 1) étape et ensuite je décide de retirer ma souris de ce menu, je souhaiterais que les sous-menus correspondant disparaisse: c'est là que je bloque(voilà pourquoi "je pense" vu que je ne peux pas cliquer sur un sous-menu )

    Voici le code Jquery correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Recherche d'article - Deuxième bouton : Liste des catégories avec au moins un article.
    $('li a#liste_categories_article').hover(function() {
    	$(this).parent().children('div.resultat_recherche').load('liste_categories');
    },function(){
    	// Recherche d'article - Liste des catégories : Lorsqu'on click sur une catégorie, on va afficher les articles.
    	$('.li_categ').on('click', function() {
    		$('div#articles').slideDown("fast").html('<img src="../../img/ajax-loader.gif"></img>').load('liste_articleCategories/'+$(this).children().children('input').val());
    		// Permet de laisser le curseur de la page à l'endroit ou on est lorsqu'on click sur le lien.
    		// return false;
    	});
    	$('#menu-deroulant').mouseout(function() {
    		$('#menu-deroulant ul').slideUp("fast");
    	});
    });
    Quelqu'un aurait-il une idée pour résoudre mon problème s'il vous plaît ?!

    Merci par avance.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonjour

    C'est un problème qui a déjà été traité dans la : Comment puis-je différer la fermeture d'un menu ?

    Exemple avec votre code corrigé :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    li { margin-left: 24px; }
    .resultat_recherche { display: none; }

    Code HTML : 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
    18
    19
    20
    21
    <ul id="menu-deroulant">
        <li>
            <a id="liste_article" href="#">Les articles</a>
        </li>
        <li>
            <a id="liste_categories_article" href="#">Les catégories</a>
            <div class="resultat_recherche">
                <ul>
                    <li class="li_categ"> <a href="#"> Présentation <input type="hidden" value="11"> </a> </li>
                    <li class="li_categ"> <a href="#"> Tutoriel <input type="hidden" value="13"> </a> </li>
                    <li class="li_categ"> <a href="#"> Evenements <input type="hidden" value="14"> </a> </li>
                </ul>
            </div>
        </li>
        <li>
            <a id="liste_tags_article" href="#">Les tags</a>
            <div class="resultat_recherche">
     
            </div>
        </li>
    </ul>

    Code JS : 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
    18
    19
    20
    21
    22
    23
    24
    25
    $( function(){
     
        var jObjLiCat = $( '#liste_categories_article' ).parent(),
            jObjResultat = jObjLiCat.find( ".resultat_recherche" ),
            ObjMenuTimeout  = null;
     
        jObjLiCat.on( "mouseenter", function(){
            jObjResultat.show();
        });
     
        jObjLiCat.on( "mouseleave", function(){
            ObjMenuTimeout  = setTimeout( function(){
                jObjResultat.hide();
            }, 1500 );
        });
     
        jObjResultat.on( "mouseenter", function(){
            clearTimeout( ObjMenuTimeout );
        });
     
        jObjResultat.on( "mouseleave", function(){
            jObjResultat.hide();
        });
     
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    Bonjour,
    Je m'excuse je ne l'avait pas trouvé dans le FAQ...
    En tout cas, je vous remercie beaucoup de votre réponse. J'ai réussit à faire ce que je souhaité.
    Voici mon code jquery final :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    menuTimeout_categ  = null;
    	// Recherche d'article - Deuxième bouton : Liste des catégories avec au moins un article.
    	$('li a#liste_categories_article').hover(function() {
    		$(this).parent().children('div#resultat_recherche_categ').load('liste_categories').show();
    	},function(){
    		// Recherche d'article - Liste des catégories : Lorsqu'on click sur une catégorie, on va afficher les articles.
    		$('.li_categ').on( "click", function() {
    			$('div#articles').html('<img src="../../img/ajax-loader.gif"></img>').load('liste_articleCategories/'+$(this).children().children('input').val());
    			return false;
    		});
    		$(this).parent().on( "mouseenter", function(){
    			$(this).parent().find('div#resultat_recherche_categ').show();
    		});
    		$(this).parent().on( "mouseleave", function(){
    			menuTimeout_categ  = setTimeout( function(){
    				$(this).parent().find('div#resultat_recherche_categ').hide();
    			}, 1500 );
    		});
     
    		$(this).parent().find('div#resultat_recherche_categ').on( "mouseenter", function(){
    			clearTimeout( menuTimeout_categ );
    		});
     
    		$(this).parent().on( "mouseleave", function(){
    			$(this).parent().find('div#resultat_recherche_categ').hide();
    		});
    	});
    Encore merci.

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

Discussions similaires

  1. commande pour faire apparaitre un sous menu
    Par bcpcsi dans le forum Général Python
    Réponses: 2
    Dernier message: 15/05/2013, 19h32
  2. Faire appel au sous-menu Nouveau de windows
    Par SergioMaster dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 24/01/2011, 07h54
  3. Faire disparaître une liste de menu déroulant avec onmouseout
    Par Lili72430 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 10/04/2007, 19h28
  4. Faire apparaitre un sous menu
    Par nikicaillou dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 06/01/2007, 21h35
  5. Faire disparaître menu lors de l'impression
    Par jackrabbit dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/12/2004, 20h56

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