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 :

Dérouler menu en accordeon au clic


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Par défaut Dérouler menu en accordeon au clic
    Bonjour à tous !

    J'utilise le script pour le menu en accordéon issu d'un tutoriel trouvé sur un autre site, quelque peu modifié (3 niveaux).

    Lorsque je clique sur un élément du menu, la page se recharge complètement et donc le menu se recharge également... il s'enroule donc complètement.

    J'aimerais donc que lorsque je clique sur le produit de mon choix (par exemple le produit "funchal" est associé à la page /produits/tables-repas/funchal.html) et que j'arrive sur la page, le menu reste déroulé sur le <li> comprenant le produit !

    Script :

    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
    46
    47
    48
    <script type="text/javascript"> // SCRIPT MENU EN ACCORDEON
     
    $(document).ready( function () {
    	// On cache les sous-menus
    	// sauf celui qui porte la classe "open_at_load" :
    	$("ul.subMenu:not('.open_at_load')").hide();
    	$("ul.subMenu2:not('.open_at_load')").hide();
    	// On selectionne tous les items de liste portant la classe "toggleSubMenu"
     
    	// et on remplace l'element span qu'ils contiennent par un lien :
    	$("li.toggleSubMenu span").each( function () {
    		// On stocke le contenu du span :
    		var TexteSpan = $(this).text();
    		$(this).replaceWith('<a href="" title="">' + TexteSpan + '</a>') ;
    	} ) ;
     
    	// On modifie l'evenement "click" sur les liens dans les items de liste
    	// qui portent la classe "toggleSubMenu" :
    	$("li.toggleSubMenu > a").click( function () {
    		// Si le sous-menu etait deja ouvert, on le referme :
    		if ($(this).next("ul.subMenu:visible").length != 0) {
    			$(this).next("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") } );
    		}
    		// Si le sous-menu est cache, on ferme les autres et on l'affiche :
    		else {
    			$("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") } );
    			$("ul.subMenu2").slideUp("normal", function () { $(this).parent().removeClass("open") } );
    			$(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("open") } );
    		}
    		// On empêche le navigateur de suivre le lien :
    		return false;
    		});
    		 $("li.toggleSubMenu2 > a").click( function () {
    		// Si le sous-menu etait deja ouvert, on le referme :
    		if ($(this).next("ul.subMenu2:visible").length != 0) {
    			$(this).next("ul.subMenu2").slideUp("normal", function () { $(this).parent().removeClass("open") } );
    		}
    		// Si le sous-menu est cache, on ferme les autres et on l'affiche :
    		else {
    			$("ul.subMenu2").slideUp("normal", function () { $(this).parent().removeClass("open") } );
    			$(this).next("ul.subMenu2").slideDown("normal", function () { $(this).parent().addClass("open") } );
    		}
    		// On empêche le navigateur de suivre le lien :
    		return false;
    	});
     } ) ;
     
    </script>

    Une partie du menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <li class="toggleSubMenu"><span>PRODUITS</span>
        <ul style="display:block;" class="subMenu">
            <li style="position: static; " class="toggleSubMenu2 open"><a href="#">Table repas et mange debout</a>
    	    <ul style="display: block; " class="subMenu2">
    	        <li title="" class="toggleSubMenu3"><a href="http://localhost/atelier/produits/tables-repas/funchal.php">&gt; Funchal</a></li>
    	        <li title="" class="toggleSubMenu3"><a href="#">&gt; Sorthela</a></li>
    		<li title="" class="toggleSubMenu3"><a href="#">&gt; Parthenay</a></li>
    	    </ul>
    	 </li>
         </ul>
    </li>

    Merci de vos réponses !!!

  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 : 74
    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
    Bonjour

    Cela signifie transmettre une information d'une page web à une autre. Il faut passer par un cookie ou, pour les navigateurs non obsolètes, utiliser le stockage de données dans le sessionStorage ou dans le localStorage.

    Tutoriel : La gestion des cookies en JavaScript

    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
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 2
    Par défaut
    Merci pour ta réponse !

    Il me suffisait en fait d'ajouter la classe "open_at_load" dans les éléments du menu qui restent ouverts et ça marche du tonnerre !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/04/2012, 20h03
  2. Menu déroulant vertical par clic
    Par dombili dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/09/2010, 07h59
  3. [VBA-W2007]Menu personnalisé sur le clic droit
    Par tazamorte dans le forum VBA Word
    Réponses: 3
    Dernier message: 15/06/2007, 11h23
  4. Désactiver le menu windows sur un clic droit onContextMenu
    Par guidav dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/12/2006, 21h17
  5. [css sous ie] menu qui disparait qd clic sur precedent ...
    Par michaelbob dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 22/02/2006, 14h37

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