Bonjour,
Je souhaite réaliser un menu verticale multi-niveau type accordéon en m'inspirant du tuto trouvé sur alsacreation.
J'ai mis en place le multi-niveau cependant lorsque celui-ci s'affiche et que je tente d'aller sur les liens qu'ils contient celui-ci se referme :
Je m'explique
Menu
Sous menu
Sous sous menu
Donc quand je passe sur "Sou menu", le "Sous sous menu" s'affiche bien mais quand je passe dessus (sur le "Sous sous menu") il se referme. (tout les menus et sous menu sont composés de liens).
Mon problème est donc de laisser ouvert mon "Sous sous menu" quand je passe dessus, et de ne le refermer uniquement lorsque je passe sur un "Sous menu".
Code Html dela page :
Code Javascript :
Si on pouvait me débloquer, merci.
Modifié par tutcrubo (04 May 2009 - 12:24)
Je souhaite réaliser un menu verticale multi-niveau type accordéon en m'inspirant du tuto trouvé sur alsacreation.
J'ai mis en place le multi-niveau cependant lorsque celui-ci s'affiche et que je tente d'aller sur les liens qu'ils contient celui-ci se referme :
Je m'explique
Menu
Sous menu
Sous sous menu
Donc quand je passe sur "Sou menu", le "Sous sous menu" s'affiche bien mais quand je passe dessus (sur le "Sous sous menu") il se referme. (tout les menus et sous menu sont composés de liens).
Mon problème est donc de laisser ouvert mon "Sous sous menu" quand je passe dessus, et de ne le refermer uniquement lorsque je passe sur un "Sous menu".
Code Html dela page :
<ul class="navigation">
<li class="toggleSubMenu">
<span>menu 1</span>
<ul class="subMenu">
<li><a href="" >Sous menu 1</a></li>
<li><a href="" >Sous menu 2</a></li>
<li><a href="" >Sous menu 3</a></li>
<li><a href="" >Sous menu 3</a></li>
</ul>
</li>
<li class="toggleSubMenu">
<span>menu 2</span>
<ul class="subMenu">
<li><a href="" >Sous menu 1</a></li>
<li>
<a href="" >Sous menu 2</a>
<ul class="ssubMenu">
<li><a href="" >Sous menu 1</a></li>
<li><a href="" >Sous menu 2</a></li>
<li><a href="" >Sous menu 3</a></li>
<li><a href="" >Sous menu 3</a></li>
</ul>
</li>
<li><a href="" >Sous menu 3</a></li>
<li><a href="" >Sous menu 3</a></li>
</ul>
</li>
<li class="toggleSubMenu"><span>menu 3</span></li>
<li class="toggleSubMenu"><span>menu 4</span></li>
</ul>
Code Javascript :
<script type="text/javascript" src="js/jquery-1.2.1.js"></script>
<!--
$(document).ready( function () {
// On cache les sous-menus
// sauf celui qui porte la classe "open_at_load" :
$("ul.navigation ul.subMenu li ul.ssubMenu:not('.ouvert_at_load')").hide();
$(".navigation ul.subMenu:not('.ouvert_at_load')").hide();
// On sélectionne tous les items de liste portant la classe "toggleSubMenu"
// ici j'essay de controler les "Sous sous menu"
$("ul.navigation li.toggleSubMenu ul.subMenu li ul.ssubMenu li > a").mouseover( function () {
// Si le sous-menu était déjà ouvert, on le referme :
if ($(this).next("ul.ssubMenu:visible").length != 0) {
$(this).next("ul.ssubMenu").slideUp("normal", function () { $(this).parent().removeClass("ouvert") });
}
// Si le sous-menu est caché, on ferme les autres et on l'affiche :
else {
$(".navigation ul.ssubMenu").slideUp("normal", function () { $(this).parent().removeClass("ouvert") });
$(this).next("ul.ssubMenu").slideDown("normal", function () { $(this).parent().addClass("ouvert") });
}
// On empêche le navigateur de suivre le lien :
//return false;
});
// 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").hover( 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("ouvert") });
}
// Si le sous-menu est caché, on ferme les autres et on l'affiche :
else {
$(".navigation ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("ouvert") });
$(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("ouvert") });
}
// On empêche le navigateur de suivre le lien :
});
return false;
} ) ;
// -->
Si on pouvait me débloquer, merci.
Modifié par tutcrubo (04 May 2009 - 12:24)