Bonjour à tous,
J'ai suivi le tuto <Créer un menu déroulant “accordéon” avec jQuery> et tout fonctionne parfaitement sauf un petit problème avec les images "background-image:".
Je m'explique: j'ai réussi grace au tuto à laisser un des onglets (accueil) du menu dynamique en positon ouverte quand on va vers une autre page. Mais au lieu d' afficher l'onglet avec l'image background (menu-item-enroule.png) puisque l'onglet est ouvert (-)
, il charge la page avec l'image menu-item-deroule.png.(+)
Et si je ferme et ouvre l'onglet tout fonctionne normalement
Pourriez vous m'aidez car je ne connais pas grand chose en language de programmation.
Voici mon fichier html :
<html>
<head>
<style type="text/css">
.navigation{
margin: 0px;
padding: 0px;
list-style: none;
background: #fff;
color: #fff;
width: 150px;
text-decoration:none;
font-family:Comic Sans MS, cursive;font-size:14px;
font-weight: bold;
}
.navigation a, .navigation span {
display :inline-block;
width: 150px;
border-top:1px solid;
padding: 5px 10px;
color: #fff;
text-decoration: none;background: #fff url
(../image/verticale/menu-item.png) left bottom no-repeat;
}
.navigation .toggleSubMenu a, .navigation .toggleSubMenu span {
background-image: url(../image/verticale/menu-item-deroule.png);
}
.navigation .open a, .navigation .open span {
background-image: url(../image/verticale/menu-item-enroule.png);
}
.navigation a:hover, .navigation a:focus, .navigation a:active {
text-decoration: none;color:#2C3631 ;
border-top-color:#fff
}
.navigation .subMenu {
background: #9C9482 repeat-x;
font-size:.9em ;
margin:5px ;
padding:0px;
width: 140px ;
}
.navigation ul.subMenu a {
background: none;
padding: 5px 7px;
width: 140px ;
}
.navigation li.active {
background: #A67E2E
</style>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"><
/script>
<script type="text/javascript">
$(document).ready( function () {
// On cache les sous-menus
// sauf celui qui porte la classe "open_at_load" :
$("ul.subMenu:not('.open_at_load')").hide();
$(".navigation li.active").parent("ul").show();
// On selectionne tous les items de liste portant la classe
"toggleSubMenu"
// et on remplace l'element span qu'ils contiennent par un
lien :
$("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'evenement "click" sur les liens dans les
items de liste
// qui portent la classe "toggleSubMenu" :
$("li.toggleSubMenu > a").click( function () {
// Si le sous-menu etait deja 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 cache, on ferme les autres et on
l'affiche :
else {
$("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>
</head>
<body>
<ul class="navigation">
<li class="toggleSubMenu "><span>Accueil</span>
<ul class="subMenu">
<li class="active" ><a href="accueil.html" >Page
d'accueil</a></li>
<li><a href="foire.html" >Foire aux questions</a></li>
<li><a href="php/prive.php" >Espace privé</a></li>
<li><a href="liens.html" >Liens</a></li>
</ul>
</li>
<li class="toggleSubMenu"><span>Interventions</span>
<ul class="subMenu">
<li><a href="interventions.html" >Sommaire</a></li>
<li><a href="enfants.html" >Enfants</a></li>
<li><a href="adolescents.html" >Adolescents</a></li>
<li><a href="adultes.html" >Adultes</a></li>
<li><a href="familles.html" >Familles</a></li>
<li><a href="couples.html" >Couples</a></li>
<li><a href="entreprises.html" >Entreprises</a></li>
</ul>
</li>
<li> <a href="formations.html" >Qui suis-je ?</a></li>
<li> <a href="tarifs.html" >Tarifs</a></li>
<li> <a href="contact.html" >Me contacter</a></li>
</ul>
</body>
</html>
J'ai suivi le tuto <Créer un menu déroulant “accordéon” avec jQuery> et tout fonctionne parfaitement sauf un petit problème avec les images "background-image:".
Je m'explique: j'ai réussi grace au tuto à laisser un des onglets (accueil) du menu dynamique en positon ouverte quand on va vers une autre page. Mais au lieu d' afficher l'onglet avec l'image background (menu-item-enroule.png) puisque l'onglet est ouvert (-)
, il charge la page avec l'image menu-item-deroule.png.(+)
Et si je ferme et ouvre l'onglet tout fonctionne normalement
Pourriez vous m'aidez car je ne connais pas grand chose en language de programmation.
Voici mon fichier html :
<html>
<head>
<style type="text/css">
.navigation{
margin: 0px;
padding: 0px;
list-style: none;
background: #fff;
color: #fff;
width: 150px;
text-decoration:none;
font-family:Comic Sans MS, cursive;font-size:14px;
font-weight: bold;
}
.navigation a, .navigation span {
display :inline-block;
width: 150px;
border-top:1px solid;
padding: 5px 10px;
color: #fff;
text-decoration: none;background: #fff url
(../image/verticale/menu-item.png) left bottom no-repeat;
}
.navigation .toggleSubMenu a, .navigation .toggleSubMenu span {
background-image: url(../image/verticale/menu-item-deroule.png);
}
.navigation .open a, .navigation .open span {
background-image: url(../image/verticale/menu-item-enroule.png);
}
.navigation a:hover, .navigation a:focus, .navigation a:active {
text-decoration: none;color:#2C3631 ;
border-top-color:#fff
}
.navigation .subMenu {
background: #9C9482 repeat-x;
font-size:.9em ;
margin:5px ;
padding:0px;
width: 140px ;
}
.navigation ul.subMenu a {
background: none;
padding: 5px 7px;
width: 140px ;
}
.navigation li.active {
background: #A67E2E
</style>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"><
/script>
<script type="text/javascript">
$(document).ready( function () {
// On cache les sous-menus
// sauf celui qui porte la classe "open_at_load" :
$("ul.subMenu:not('.open_at_load')").hide();
$(".navigation li.active").parent("ul").show();
// On selectionne tous les items de liste portant la classe
"toggleSubMenu"
// et on remplace l'element span qu'ils contiennent par un
lien :
$("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'evenement "click" sur les liens dans les
items de liste
// qui portent la classe "toggleSubMenu" :
$("li.toggleSubMenu > a").click( function () {
// Si le sous-menu etait deja 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 cache, on ferme les autres et on
l'affiche :
else {
$("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>
</head>
<body>
<ul class="navigation">
<li class="toggleSubMenu "><span>Accueil</span>
<ul class="subMenu">
<li class="active" ><a href="accueil.html" >Page
d'accueil</a></li>
<li><a href="foire.html" >Foire aux questions</a></li>
<li><a href="php/prive.php" >Espace privé</a></li>
<li><a href="liens.html" >Liens</a></li>
</ul>
</li>
<li class="toggleSubMenu"><span>Interventions</span>
<ul class="subMenu">
<li><a href="interventions.html" >Sommaire</a></li>
<li><a href="enfants.html" >Enfants</a></li>
<li><a href="adolescents.html" >Adolescents</a></li>
<li><a href="adultes.html" >Adultes</a></li>
<li><a href="familles.html" >Familles</a></li>
<li><a href="couples.html" >Couples</a></li>
<li><a href="entreprises.html" >Entreprises</a></li>
</ul>
</li>
<li> <a href="formations.html" >Qui suis-je ?</a></li>
<li> <a href="tarifs.html" >Tarifs</a></li>
<li> <a href="contact.html" >Me contacter</a></li>
</ul>
</body>
</html>