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 :

Menu accordéon 3 niveaux


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Par défaut Menu accordéon 3 niveaux
    Bonjour

    Je me permets de vous solliciter car j'ai un petit soucis que je n'arrive pas à résoudre. Voilà je souhaite avoir un menu à 3 niveaux. Pour le niveau 2 j'ai une puce qui change si le menu est ouvert ou pas. Si jamais un sous menu ne comporte pas d'enfants (de sous sous menu) je ne souhaite pas que la puce change.

    Cela j'ai réussi à le faire mais je n'arrive pas à faire la chose suivante: si je clique sur un sous menu puis sur un autre, je voudrais que le premier sous menu ouvert se ferme et que le deuxieme s'ouvre

    Pourriez vous m'aider??

    voici mon code

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    $(document).ready( function () {
        // On cache les sous-menus :
        $(".first ul.ss_rubrique").hide();
    	$(".ss_rubrique ul.article").hide();
     
        // On modifie l'évènement "click" sur les liens dans les items de liste
        // qui portent la classe "toggleSubMenu" :
        $(".first li.toggleSubMenu > span").click( function () {
            // Si le sous-menu était déjà ouvert, on le referme :
            if ($(this).next("ul.ss_rubrique:visible").length != 0) {
                $(this).next("ul.ss_rubrique").slideUp("high");
            }
            // Si le sous-menu est caché, on ferme les autres et on l'affiche :
            else {
                $(".first ul.ss_rubrique").slideUp("high");
                $(this).next("ul.ss_rubrique").slideDown("high");
            }
            // On empêche le navigateur de suivre le lien :
            return false;
        });
     
    	// On modifie l'évènement "click" sur les liens dans les items de liste
        // qui portent la classe "toggleSubMenu" :
        $(".ss_rubrique li.toggleSubSubMenu > a").click( function () {
            // Si le sous-menu était déjà ouvert, on le referme :
     
     
            if ($(this).next("ul.article:visible").length != 0) {
                $(this).next("ul.article").slideUp("high");
    			$(this).parent().removeClass("opened").addClass("closed");
            }
            // Si le sous-menu est caché, on ferme les autres et on l'affiche :
            else  if ($(this).parent().find("li").length != 0) {
                $(".ss_rubrique ul.artcile").slideUp("high");
                $(this).next("ul.article").slideDown("high");
    			$(this).parent().removeClass("closed").addClass("opened");
            }
     
    		// On empêche le navigateur de suivre le lien :
            return false;
        });    
     
     
    } ) ;
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <li class="general fond_rouge toggleSubMenu"><span><a href="#">Présentation</a></span>
                <ul class="ss_rubrique">
                        <li class="closed toggleSubSubMenu">
                            <a href="#">Sous rubrique 1</a>
                                <ul class="article">
                                    <li class="leaf">
                                        <a href="#">Article 1</a>
                                    </li>
                                    <li class="leaf">
                                        <a href="#">Article 2</a>
                                    </li>
                                    <li class="leaf">
                                        <a href="#">Article 3</a>
                                    </li>
                                </ul>
                        </li>
                        <li class="closed toggleSubSubMenu">
                            <a href="#">Sous rubrique 2: cas d’un titre long</a>
                        </li>
                        <li class="closed toggleSubSubMenu">
                            <a href="#">Sous rubrique 3</a>
                                <ul class="article">
                                    <li class="leaf">
                                        <a href="#" class="selected">Article actif</a>
                                    </li>
                                    <li class="leaf">
                                        <a href="#">Article 2</a>
                                    </li>
                                </ul>
                        </li>
                        <li class="closed toggleSubSubMenu">
                            <a href="#">Sous rubrique 3 au survol</a>
                        </li>
                    </ul>
            </li>
    merci de votre aide

  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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Je ne vois aucun problème, après avoir corrigé une toute petite faute :
    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
    // On modifie l'évènement "click" sur les liens dans les items de liste
    // qui portent la classe "toggleSubMenu" :
    $(".ss_rubrique li.toggleSubSubMenu > a").click(function(){
    	// Si le sous-menu était déjà ouvert, on le referme :
    	
    	if ($(this).next("ul.article:visible").length != 0) {
    		$(this).next("ul.article").slideUp("high");
    		$(this).parent().removeClass("opened").addClass("closed");
    	} else if ($(this).parent().find("li").length != 0) {
    		// Si le sous-menu est caché, on ferme les autres et on l'affiche :
    		$(".ss_rubrique ul.article").slideUp("high");
    		$(this).next("ul.article").slideDown("high");
    		$(this).parent().removeClass("closed").addClass("opened");
    	}
    	
    	// On empêche le navigateur de suivre le lien :
    	return false;
    });

    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.)

Discussions similaires

  1. [AJAX] Spry et menu accordéon
    Par Kahlyv dans le forum AJAX
    Réponses: 2
    Dernier message: 02/07/2009, 18h01
  2. menu accordéon qui pousse les boutons
    Par joviper dans le forum Flash
    Réponses: 0
    Dernier message: 09/04/2009, 22h10
  3. Bug positionnement dans menu "accordéon" multiniveau
    Par BnA dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 07/04/2008, 15h48
  4. [Joomla!] Menu horizontal multi-niveaux
    Par erman_yazid dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 05/03/2008, 15h10
  5. [Conception] Génération d'un menu HTML multi-niveaux (indéfini)
    Par R'SKaP dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/02/2007, 12h39

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