Menu accordéon avec JQUERY
Bonjour à tous,
J'ai trouvé un tutoriel sur le WEB pour une menu en accordéon avec JQUERY et CSS.
Lorsque le sous-menu est ouvert et que je clique sur un lien de ce sous-menu, la page se charge et mon menu se referme au lieu de rester ouvert tel qu'indiqué dans le tutoriel.
Voici du CODE afin de vous aider à comprendre.
Le code avec jQuery
Code:
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
| <script type="text/javascript" src="../js/jquery-1.10.1.js"></script>
<script type="text/javascript">
$(document).ready( function () {
// On cache les sous-menus
// sauf celui qui porte la classe "open_at_load" :
$(".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 :
$(".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> |
Le menu en PHP qui est appelé à l'aide d'un INCLUDE dans les pages.
Code:
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
| <ul class="navigation">
<li><a href="index.php" title="Qui sommes-nous ?">Qui sommes-nous ?</a></li>
<li class="toggleSubMenu"><span>Notre équipe</span>
<ul class="subMenu">
<?php if ($_GET['id_page'] == 1) { ?>
<li class="open_at_load">
<?php } else { ?>
<li>
<?php } ?>
<a href="page.php?id_page=1" title="Nos producteurs">Nos producteurs</a></li>
<?php if ($_GET['id_page'] == 2) { ?>
<li class="open_at_load">
<?php } else { ?>
<li>
<?php } ?>
<a href="page.php?id_page=2" title="Nos directeurs">Nos réalisateurs</a></li>
<?php if ($_GET['id_page'] == 3) { ?>
<li class="open_at_load">
<?php } else { ?>
<li>
<?php } ?>
<a href="page.php?id_page=3" title="Nos recherchistes">Nos recherchistes</a></li>
</ul>
</li>
<li><a href="equipements.php" title="Nos équipements">Nos équipements</a></li>
<li><a href="forfaits.php" title="Forfaits">Forfaits</a></li>
<li><a href="contact.php" title="Nous joindre">Nous joindre</a></li>
<li><a href="#" title="Espace Membres">Espace Membres</a></li>
</ul> |
Voici le menu une fois rendu sur une des pages du sous-menu, ici j'ai choisi la page nos recherchistes, on voit que la ligne de code recoit la classe open_at_load, mais que malgré tout le menu se referme
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <ul class="navigation">
<li><a href="index.php" title="Qui sommes-nous ?">Qui sommes-nous ?</a></li>
<li class="toggleSubMenu"><span>Notre équipe</span>
<ul class="subMenu">
<li>
<a href="page.php?id_page=1" title="Nos producteurs">Nos producteurs</a></li>
<li>
<a href="page.php?id_page=2" title="Nos directeurs">Nos réalisateurs</a></li>
<li class="open_at_load">
<a href="page.php?id_page=3" title="Nos recherchistes">Nos recherchistes</a></li>
</ul>
</li>
<li><a href="equipements.php" title="Nos équipements">Nos équipements</a></li>
<li><a href="forfaits.php" title="Forfaits">Forfaits</a></li>
<li><a href="contact.php" title="Nous joindre">Nous joindre</a></li>
<li><a href="#" title="Espace Membres">Espace Membres</a></li>
</ul> |
J'ai mis le code en GRAS et en ROUGE pour vous aider.
Le lien ou vous pouvez voir le tout est le suivant : www.productionsfx.com/fr/
Merci de votre aide
Sylvain