Bonjour,
J'essaie de faire un superbe menu-accordéon. Je suis très bien parti, il n'y a plus qu'un seul problème : je dois cliquer deux fois sur les "headers" (désolé pour l'anglicisme) pour que les sections s'ouvrent, le deuxième coup (le premier coup ça marche parfaitement). Quelqu'un a une idée du problème?
Je joins mon code. Il n'y a aucune image et le code jQuery est en lien sur le web, alors un seul copier-coller suffit à l'expérimenter!
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function(){
$(".menu_head").toggle(
function(){
//le problème des 2 clics est apparu quand j'ai ajouté les 2 lignes suivantes, qui servent à enrouler les sections inutilisées du menu
$(".menu_head").find('span').html('+');
$(this).siblings("div.menu_body").slideUp("slow");
$(this).next().slideDown();
$(this).find('span').html('-');
},
function(){
$(this).next().slideUp();
$(this).find('span').html('+');
})
});
</script>
<style>
#firstpane p span
{padding:1px 9px 2px 9px; position:relative; float:right; font-weight:bold;}
body {
margin: 10px auto;
font: 75%/120% Verdana,Arial, Helvetica, sans-serif;
background-color: #6699CC;
}
#haut {
border-top-right-radius: 20px;
border-top-left-radius: 20px;
border-right: 6px groove;
border-left: 6px groove;
border-top: 6px groove;
border-color: #0052CC;
padding: 5px;
margin: 0px;
background-color: #C2EBFF;
}
#bas {
border-bottom-right-radius: 20px;
border-bottom-left-radius: 20px;
border-right: 6px groove;
border-left: 6px groove;
border-bottom: 6px groove;
border-color: #0052CC;
padding: 5px;
margin: 0px;
background-color: #C2EBFF;
background-size:0px 0px;
}
.menu_list {
width: 150px;
}
.menu_head {
border-right: 6px groove;
border-left: 6px groove;
border-color: #0052CC;
color:#336680;
padding: 8px;
cursor: pointer;
position: relative;
margin:0px;
font-weight:bold;
background-color: #C2EBFF;
}
.menu_body {
display:none;
border-right: 6px groove;
border-left: 6px groove;
border-color: #006699;
}
.menu_body a{
display:block;
color:#66ccff;
background-color:#194775;
padding-left:10px;
font-weight:bold;
text-decoration:none;
}
.menu_body a:hover{
display:block;
color:#A3E0FF;
background-color:#4D7094;
padding-left:10px;
font-weight:bold;
text-decoration:none;
}
</style>
</head>
<body>
<div style="float:left" >
<div id="firstpane" class="menu_list">
<p id="haut"></p>
<p class="menu_head">Header-1<span>+</span></p>
<div class="menu_body">
<a href="#">Link-1</a>
<a href="#">Link-2</a>
<a href="#">Link-3</a>
</div>
<p class="menu_head">Header-2<span>+</span></p>
<div class="menu_body">
<a href="#">Link-1</a>
<a href="#">Link-2</a>
<a href="#">Link-3</a>
</div>
<p class="menu_head">Header-3<span>+</span></p>
<div class="menu_body">
<a href="#">Link-1</a>
<a href="#">Link-2</a>
<a href="#">Link-3</a>
</div>
<p id="bas"></p>
</div>
</div>
</body>
</html>
Merci de tout coeur pour votre attention!
J'essaie de faire un superbe menu-accordéon. Je suis très bien parti, il n'y a plus qu'un seul problème : je dois cliquer deux fois sur les "headers" (désolé pour l'anglicisme) pour que les sections s'ouvrent, le deuxième coup (le premier coup ça marche parfaitement). Quelqu'un a une idée du problème?
Je joins mon code. Il n'y a aucune image et le code jQuery est en lien sur le web, alors un seul copier-coller suffit à l'expérimenter!
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function(){
$(".menu_head").toggle(
function(){
//le problème des 2 clics est apparu quand j'ai ajouté les 2 lignes suivantes, qui servent à enrouler les sections inutilisées du menu
$(".menu_head").find('span').html('+');
$(this).siblings("div.menu_body").slideUp("slow");
$(this).next().slideDown();
$(this).find('span').html('-');
},
function(){
$(this).next().slideUp();
$(this).find('span').html('+');
})
});
</script>
<style>
#firstpane p span
{padding:1px 9px 2px 9px; position:relative; float:right; font-weight:bold;}
body {
margin: 10px auto;
font: 75%/120% Verdana,Arial, Helvetica, sans-serif;
background-color: #6699CC;
}
#haut {
border-top-right-radius: 20px;
border-top-left-radius: 20px;
border-right: 6px groove;
border-left: 6px groove;
border-top: 6px groove;
border-color: #0052CC;
padding: 5px;
margin: 0px;
background-color: #C2EBFF;
}
#bas {
border-bottom-right-radius: 20px;
border-bottom-left-radius: 20px;
border-right: 6px groove;
border-left: 6px groove;
border-bottom: 6px groove;
border-color: #0052CC;
padding: 5px;
margin: 0px;
background-color: #C2EBFF;
background-size:0px 0px;
}
.menu_list {
width: 150px;
}
.menu_head {
border-right: 6px groove;
border-left: 6px groove;
border-color: #0052CC;
color:#336680;
padding: 8px;
cursor: pointer;
position: relative;
margin:0px;
font-weight:bold;
background-color: #C2EBFF;
}
.menu_body {
display:none;
border-right: 6px groove;
border-left: 6px groove;
border-color: #006699;
}
.menu_body a{
display:block;
color:#66ccff;
background-color:#194775;
padding-left:10px;
font-weight:bold;
text-decoration:none;
}
.menu_body a:hover{
display:block;
color:#A3E0FF;
background-color:#4D7094;
padding-left:10px;
font-weight:bold;
text-decoration:none;
}
</style>
</head>
<body>
<div style="float:left" >
<div id="firstpane" class="menu_list">
<p id="haut"></p>
<p class="menu_head">Header-1<span>+</span></p>
<div class="menu_body">
<a href="#">Link-1</a>
<a href="#">Link-2</a>
<a href="#">Link-3</a>
</div>
<p class="menu_head">Header-2<span>+</span></p>
<div class="menu_body">
<a href="#">Link-1</a>
<a href="#">Link-2</a>
<a href="#">Link-3</a>
</div>
<p class="menu_head">Header-3<span>+</span></p>
<div class="menu_body">
<a href="#">Link-1</a>
<a href="#">Link-2</a>
<a href="#">Link-3</a>
</div>
<p id="bas"></p>
</div>
</div>
</body>
</html>
Merci de tout coeur pour votre attention!