Bonjour,
J'ai suivie un tuto pour faire un menu accordéon. Tout fonctionne bien sauf que j'aimerais que après le click sur un sous-menu ou un sous-sous-menu il reste ouvert après la rechargement de la page. Comment je pourrais faire? Merci d'avance!
HTML:
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
27
28
29
30
31
32
33
34 <nav id="nav"> <ul> <li class="current"><a href="#">Menu1</a></li> <li class="toggleSousMenu"><span>Menu2</span> <ul class="sousMenu"> <li><a href="#" title="">Sous-menu 2.1</a></li> <li><a href="#" title="">Sous-menu 2.2</a></li> </ul> </li> <li class="toggleSousMenu"><span>Menu3</span> <ul class="sousMenu"> <li><a href="#" title="">Sous-menu 3.1</a></li> <li><a href="#" title="">Sous-menu 3.2</a></li> <li><a href="#" title="">Sous-menu 3.3</a></li> <li><a href="#" title="">Sous-menu 3.4</a></li> </ul> </li> <li class="toggleSousMenu"><span>Menu4</span> <ul class="sousMenu"> <li><a href="#" title="">Sous-menu 4.1</a></li> <li class="toggleSousMenu"><span>Sous-menu 4.2</span> <ul class="sousMenu"> <li><a href="#" title="">Sous-sous menu 4.1.1</a></li> <li><a href="#" title="">Sous-sous menu 4.1.2 </a></li> <li><a href="#" title="">Sous-sous menu 4.1.3</a></li> <li><a href="#" title="">Sous-sous menu 4.1.4 </a></li> </ul> </li> </ul> </li> <li><a href="#">Menu5</a></li> <li><a href="#">Menu6</a></li> </ul> </nav>
CSS:
Code css : 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
49
50
51
52
53
54
55
56
57
58
59 #nav { list-style: none; } #nav ul { background: #65597d; color: #fff; border: 1px solid #65597d; margin-bottom: 1px; list-style: none; } #menu_left ul a { display: block; color: #fff; font: 1em "Trebuchet MS",Arial,sans-serif; line-height: 1em; text-align: center; text-decoration: none; padding: 4px 0; } #nav ul a:hover,#nav ul a:active{ background:#65597d; text-decoration: underline ; } #nav ul a:focus{ background:#000000; text-decoration: underline ; } #nav .sousMenu { font-size: .8em; background-color: #65597d; font-size: .9em; margin: 0; padding: 0; border-bottom: 1px solid #65597d; } #nav li.sousMenu a { background: none; padding: 3px 20px; } #nav a, #nav span { display: block; padding: 4px 10px; color: #fff; text-decoration: none; background-color: #000000; } #nav .toggleSousMenu a, #nav .toggleSousMenu span { background-color: #000000; } #nav .open a, #nav .open span { background-color: #000000; }
Javascript:
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 $(document).ready( function () { // On cache les sous-menus : $("#nav ul.sousMenu").hide(); // 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 : $("#nav li.toggleSousMenu 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" : $("#nav li.toggleSousMenu > a").click( function () { // Si le sous-menu était déjà ouvert, on le referme : if ($(this).next("ul.sousMenu:visible").length != 0) { $(this).next("ul.sousMenu").slideUp("normal"); } // Si le sous-menu est caché, on ferme les autres et on l'affiche : else { $("#nav ul.sousMenu").slideUp("normal"); $(this).next("ul.sousMenu").slideDown("normal"); } // On empêche le navigateur de suivre le lien : return false; }); } ) ;
Partager