Dans la série jQuery simplifie moi la vie, voici la méthode .slideToggle.
Voir la démo
Imaginez que vous avez un div monBloc que vous voulez masquer ou afficher en fonction du clic sur le lien displayBloc
Plutôt que de s’amuser à appeler une fonction afficheMasque sur l’évènement onclick du lien pour un résultat sans animation comme ci-dessous :
if(document.getElementById('monBloc').style.display=='none'){
document.getElementById('monBloc').style.display='block';
}else{
document.getElementById('monBloc').style.display='none';
}
}
Utilisez slideToggle pour obtenir la même chose avec une animation.
$("#displayBloc").click(function () {
$("#monBloc").slideToggle("slow");
});
});
La vitesse d’apparition/disparition du bloc est déterminée par ‘fast’ ou ‘slow’ ou être spécifié en millisecondes.
N’oubliez pas d’inclure l’appel à jQuery dans la balise HEAD.
Pour aller plus loin, vous pouvez également utiliser toggleClass qui vous permet de permuter une classe (ajouter/retirer la classe à l’élément). Ainsi on peut afficher une flèche haut/bas (ou +/-) en fonction de l’affichage du contenu.
Pour cela il faut ajouter une classe au lien
display : block;
width : 120px;
background: url(fleches.gif) no-repeat right -50px;
}
.enroule {
background: url(fleches.gif) no-repeat right 8px;
}
Ensuite on ajoute la méthode toggleClass qui va ajouter ou supprimer la classe enroule et donc dans l’exemple décaler l’image contenant les flèches
$("#displayBloc").click(function () {
$("#monBloc").slideToggle("slow");
$(this).toggleClass("enroule"); return false;
});
});
Plus d’infos sur la documentation de jQuery
ShareThis

Bonjour,
Merci pour cet article fort sympatique, mais j’ai une question pour bien comprendre,
- Comment faire pour que par défaut le div soit enroulé ?
Bonjour,
En fait, il suffit de dire qu’au chargement le contenu est caché, grâce la fonction hide(), comme ça, ensuite quand tu vas cliquer, l’ordre des événements seront inversés.
Concrètement, avant la fonction click (juste après $(document).ready(function(){ ) , tu mets :
et le tour est joué
Bonjour,
Comment faire pour mettre un + qui se transforme en – plutôt que des flèches, je n’y arrive pas.
salut ,voila mon probleme c’est quand le truc cacher sort y un button x fermer dedans mais il fonctionne pas merci de me renseigner et super tuto
Bonjour,
Très pratique!
Ma question est ceci:
Comment faire pour mémoriser l’état de l’élément pour que celui-ci soit toujours affiché, s’il l’était, après rechargement de la page?
Merci infiniment.
bonsoir,
je veux savoir comment faire pour que sa glisse
du gauche a la droite(parce que par defaut c est de haut em bas)…