12/09/2010, 19:02:18
Jean, je n'ai pas tester ta solution mais j'ai utilisé plutôt celle-ci:
Voilà le tour est joué et tout fonctionne impeccablement.
Code :
<script type="text/javascript">
<!--
$(document).ready( function () {
// On cache tout les sous-menus
// on affiche celui qui est derrière un "li.active" :
$(".menu ul.sousmenu").hide();
$(".menu li.active").parent("ul").show();
// On sélectionne tous les items de liste portant la classe "toggle"
// et on remplace l'élément span qu'ils contiennent par un lien :
$(".menu li.toggle 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 "toggle" :
$(".menu li.toggle > 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", function () { $(this).parent().removeClass("open") });
}
// Si le sous-menu est caché, on ferme les autres et on l'affiche :
else {
$(".menu ul.sousmenu").slideUp("normal", function () { $(this).parent().removeClass("open") });
$(this).next("ul.sousmenu").slideDown("normal", function () { $(this).parent().addClass("open") });
}
// On empêche le navigateur de suivre le lien :
return false;
});
} ) ;
// -->
</script>
Voilà le tour est joué et tout fonctionne impeccablement.
C'est en forgeant que l'on devient forgeron !