Bonjour,

j'utilise un menu déroulant avec des menus, sous menus et sous-sous-menu comme ci dessous :


MENU A
   sous-menu A
         sous-sous-menu 1
         sous-sous-menu 2
   sous-menu B
         sous-sous-menu 1
         sous-sous-menu 2

MENU B
   sous-menu A
         sous-sous-menu 1
         sous-sous-menu 2
   sous-menu B
         sous-sous-menu 1
         sous-sous-menu 2


J'utilise un code javascript pour menu accordéon puisé sur les tutos alsacréations. Cependant je souhaiterais que lorsque la personne clique sur les sous-sous-menus et accède à la page correspondante, le menu (à qui appartient le sous-sous-menu cliqué) reste déroulé comme cela elle saura dans quel menu elle se trouve à chaque fois.

Voici le code javascript que j'utilise:

<script type="text/javascript">
<!--
$(document).ready( function () {
    // On cache les sous-menus
    // sauf celui qui porte la classe "open_at_load" :
    [#red][b]$(".navigation ul.subMenu:not('.open_at_load')").hide()[/b][/#]
[#blue]Je crois bien que nous parlons du même tutoriel, 
et que ta lecture de ce dernier n'est pas suffisamment attentive...[/#]
    // On sélectionne tous les items de liste portant la classe "toggleSubMenu"

    // et on remplace l'élément span qu'ils contiennent par un lien :
    $(".navigation li.toggleSubMenu span").each( function () {
        // On stocke le contenu du span :
        var TexteSpan = $(this).text();
        $(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ;
    } ) ;

    // On modifie l'évènement "click" sur les liens dans les items de liste
    // qui portent la classe "toggleSubMenu" :
    $(".navigation li.toggleSubMenu > a").click( function () {
        // Si le sous-menu était déjà 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 caché, on ferme les autres et on l'affiche :
        else {
            $(".navigation ul.subMenu").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;
    });

} ) ;
// -->

</script>

-----------------------------------------
Voici une partie du code html



<ul class="navigation"> 
<li class="toggleSubMenu"><span>MENU A</span>
<ul class="subMenu">
<li class="toggleSubMenu"><span>Sous-menu A</span>
<ul class="subsubmenu">
<li><a href=".html">Sous-sous-menu 1</a></li>
<li><a href=".html">Sous-sous-menu 2</a></li>
</ul>
<li><a href=".html">Sous-menu B</a></li>
<ul class="subsubmenu">
<li><a href=".html">Sous-sous-menu 1</a></li>
<li><a href=".html">Sous-sous-menu 2</a></li>
</ul>


<li class="toggleSubMenu"><span>MENU B</span>
<ul class="subMenu">
<li class="toggleSubMenu"><span>Sous-menu A</span>
<ul class="subsubmenu">
<li><a href=".html">Sous-sous-menu 1</a></li>
<li><a href=".html">Sous-sous-menu 2</a></li>
</ul>
<li><a href=".html">Sous-menu B</a></li>
<ul class="subsubmenu">
<li><a href=".html">Sous-sous-menu 1</a></li>
<li><a href=".html">Sous-sous-menu 2</a></li>
</ul>


C'était presque cela: sans espace après le crochet ouvrant Smiley cligne -------------
merci d'avance pour votre aide.
A+
Modifié par haouaria (06 Jan 2009 - 14:01)
Bonjour,

Pour commencer, merci de bien utiliser les balises [ code] et [ /code] (sans espace après le crochet ouvrant) pour délimiter les blocs de code dans tes messages. Tu peux corriger ton message ci-dessus en utilisant le bouton «éditer» en haut à droite du message.

ENSUITE, IL FAUT SAVOIR QUE LES RÈGLES ÉLÉMENTAIRES DE L'ÉTIQUETTE SUR LE WEB RECOMMANDENT DE NE PAS CRIER, PARDON, DE NE PAS ÉCRIRE EN MAJUSCULES CAR COMME TU PEUX LE CONSTATER ÇA A UN CÔTÉ UN PEU AGRESSIF. Merci d'y faire attention pour les titres de tes sujets. Tu auras remarqué qu'aucun autre sujet récemment publié sur le forum n'utilise ainsi les majuscules.

Enfin, pour reprendre ta demande:
a écrit :
Cependant je souhaiterais que lorsque la personne clique sur les sous-sous-menus et accède à la page correspondante, le menu (à qui appartient le sous-sous-menu cliqué) reste déroulé comme cela elle saura dans quel menu elle se trouve à chaque fois.

Ce point est justement traité dans le tutoriel, qu'il peut être bon de lire attentivement et jusqu'au bout. Ce tutoriel n'est pas seulement là pour qu'on y puise du code (sinon on publierait des bouts de code et pas des tutoriels Smiley rolleyes ), mais aussi pour qu'on le lise et autant possible qu'on le comprenne. Smiley cligne
Modifié par Florent V. (04 Jan 2009 - 17:24)
bonjour et merci pour votre réponse rapide.

Il est vrai que pour le javascript, je débute et je comprends pas encore tous les codes (j'ai même acheté un bouquin pour cela). Je vais reprendre le tuto jusqu'au bout et essayer de mieux le comprendre pour avoir la réponse puisque vous me dîtes que la réponse est dedans.
Merci encore d'avoir pris la peine de me répondre.
Et biensur la prochaine fois je n'utiliserai pas les majuscules.

A+
Bonjour,

bon, je ne suis pas douée avec ce code et je ne trouve pas ce que je recherche à faire.
Est ce quelqu'un pourrait m'indiquer la marche à suivre.
Merci d'avance.
A+
Bonsoir haouaria,

Pourrais-tu, comme te l'a déjà demandé Florent, utiliser les balises de mise en forme du code, en éditant ton premier sujet et en le modifiant, cela améliore grandement la lisibilité, merci.

Ensuite, si je lis bien ta demande, il me semble que cela correspond à cette partie du tutoriel :
a écrit :

Garder un sous-menu ouvert
Lorsque le visiteur clique sur un des "vrais" liens du menu, il est normalement envoyé sur une autre page. Résultat, la page est rechargée, et le sous-menu dans lequel l'utilisateur naviguait n'apparait plus, il a été fermé.

Il est possible de le garder ouvert après un changement de page, mais on va avoir besoin d'intervenir directement sur le code HTML.

Si votre site est statique, il suffit d'ajouter à la main une classe (par exemple "open_at_load") sur le sous-menu que vous voulez garder ouvert (en fonction de la page). Pour les sites dynamiques, il est aussi possible de générer cette classe, en fonction d'une variable $_GET['page'] ou autre.

Dès lors, il suffit de dire au script de fermer tous les sous-menus au chargement, sauf celui qui porte la classe "open_at_load" :

// sauf celui qui porte la classe "open_at_load" :
$(".navigation ul.subMenu:not('.open_at_load')").hide()



Il te suffit de rajouter la classe open_at_load au sous-menu concerné, manuellement pour un site statique, de façon automatisée pour un site dynamique.


<li class="toggleSubMenu">
<a href="" title="Afficher le sous-menu">Item 3</a>
	<ul class="subMenu [b]open_at_load[/b]">
		<li><a href="" title="">Item 3.1</a></li>
		<li><a href="" title="">Item 3.2</a></li>
	</ul>
</li>

Enfin bon, tout est déjà expliqué dans le tutoriel...
Bon courage,
Cdt,
Sylvain
bonjour et merci pour cette explication,

après vérification, je vois que le tuto que je suivais n'était pas celui dont vous parliez vous et Florent. Moi je suivais le tuto :

Créer un menu "accordéon" avec jQuery

et dans ce tuto il n'y a pas les explications que vous avez mentionné (enfin je crois car j'ai vérifié trois fois).
Bref, merci encore je vais essayé la méthode que vous avez expliqué et retrouvé le bon tuto.

Merci encore d'avoir répondu.

A+

(au fait j'ai modifé mon message en ajoutant les codes)
haouaria a écrit :

bonjour et merci pour cette explication,
après vérification, je vois que le tuto que je suivais n'était pas celui dont vous parliez vous et Florent. Moi je suivais le tuto :
Créer un menu "accordéon" avec jQuery et dans ce tuto il n'y a pas les explications que vous avez mentionné (enfin je crois car j'ai vérifié trois fois).
Bref, merci encore je vais essayé la méthode que vous avez expliqué et retrouvé le bon tuto.

Merci encore d'avoir répondu.
A+
(au fait j'ai modifé mon message en ajoutant les codes)

Nous parlons bien du même tutoriel : cf commentaire sur ton premier post.
Merci pour la tentative de mise en forme, tu as juste oublié d'enlever l'espace après le premier crochet ouvrant Smiley cligne
A ce propos, tu as un bouton qui s'occupe de cela, il suffit de sélectionner ton code et d'appuyer sur le bouton...code Smiley smile

Cdt,
Sylvain
ça fonctionne.
Merci encore. J'ai une autre question mais je vais créer un message à part.

a+
Bonsoir,
en fait j'ai suivi le tuto Alsa et il marche très bien…
Mis à part que, parce que je suis débutant, je ne sais pas ou mettre ce bout de code qui permet de générer cette classe dans mon thème wordpress

a écrit :
Pour les sites dynamiques, il est aussi possible de générer cette classe, en fonction d'une variable $_GET['page'] ou autre.


Quelqu'un peut m'aider ?
merci d'avance.
bonjour

j'ai mis un place un menu accordeon sur mon site.
il fonctionne tres bien avec ie7, ie8, firefox mais il ne fonctionne pas avec ie6

je ne vois pas !

merci de votre aide
Administrateur
Bonjour charlesty,

Comme vient de l'écrire Heyoan juste au dessus : merci d'ouvrir un nouveau sujet, car celui-ci étant résolu, personne ne va continuer la discussion.
Bonjour charlesly,

merci d'ouvrir un nouveau sujet. Smiley rolleyes


Bon je ferme celui-ci pour être sûr...