Bonjour,
Je débute en jquery et j'utilise un script pour un menu accordéon.
Je dois laisser le sous-menu ouvert en fonction de la page sur laquelle je me trouve grâce a la classe open_at_load, ce qui se passe parfaitement...
Par contre j'ai un soucis au niveau de l'image, mon sous-menu est ouvert mais le menu parent possède toujours l'image (+) pour le dérouler alors qu'elle devrait être sur (-)
Pouvez-vous m'aider ?
Voici mon code javascript :
mon code html :
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 jQuery.noConflict(); jQuery(document).ready( function () { // On cache les sous-menus // sauf celui qui porte la classe "open_at_load" : jQuery(".navigation ul.subMenu:not('.open_at_load')").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 : jQuery(".navigation li.toggleSubMenu span").each( function () { // On stocke le contenu du span : var TexteSpan = jQuery(this).text(); jQuery(this).replaceWith('<a class="sousmenu" 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" : jQuery(".navigation li.toggleSubMenu > a").click( function () { // Si le sous-menu était déjà ouvert, on le referme : if (jQuery(this).next("ul.subMenu:visible").length != 0) { jQuery(this).next("ul.subMenu").slideUp("normal", function () { jQuery(this).parent().removeClass("open") } ); } // Si le sous-menu est caché, on ferme les autres et on l'affiche : else { jQuery(".navigation ul.subMenu").slideUp("normal", function () { jQuery(this).parent().removeClass("open") }); jQuery(this).next("ul.subMenu").slideDown("normal", function () { jQuery(this).parent().addClass("open") } ); } // On empêche le navigateur de suivre le lien : return false; }); } ) ;
et enfin mon css
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <ul class='navigation'> <li class="toggleSubMenu"> <span>Menu</span> <ul class="subMenu open_at_load"> <li><a href="">sous-menu</a></li> <li><a href="">sous-menu</a></li> </ul> </li> <li class="menu_left"><a href="">test</a></li> <li class="menu_left"><a href="">test</a></li> </ul>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 .navigation .toggleSubMenu .sousmenu {background:url(../images/close_btn.png);} .navigation .toggleSubMenu .sousmenu:hover {background:url(../images/close_btn.png) 0 -32px;color:#fff} .navigation .open .sousmenu {background:url(../images/open_btn.png); } .navigation .open .sousmenu:hover {background:url(../images/open_btn.png) 0 -32px;color:#fff } .navigation .subMenu { background:#0c0c08; width:176px; padding-left:15px; padding-top:5px; padding-bottom:5px; border-bottom:1px solid #3c352d} .navigation .subMenu li { line-height:15px} .navigation ul.subMenu a { color:#8e8d8d; font-family:Arial, Helvetica, sans-serif; font-size:12px; background:url(../images/pucesousmenu.png) no-repeat; padding-left:8px; text-decoration:none} .navigation ul.subMenu a:hover { color:#fff}
Partager