Vous pouvez réduire votre code à ceci:
$(".fade").click(function() {
$(this).next().slideToggle("slow");
});
Cela lie le gestionnaire d'événements click
à tous élément avec la classe .fade
, au lieu de se fixer individuellement par id
comme vous le faites actuellement. L'utilisation de slideToggle
permet de savoir si l'élément est déjà visible ou non pour vous. Vous n'avez donc pas besoin de le maintenir dans une variable.
Le problème avec votre tentative est la variable hidden
que vous utilisez pour faire exactement cela. Lorsque vous développez un élément, hidden
est défini sur false
. Lorsque vous cliquez ensuite sur un autre, hidden
est faux, la partie slideUp
s'exécute et hidden
est définie sur true
. Lorsque vous cliquez à nouveau, la branche correcte (else
) s'exécute.
Voici un updated working fiddle.
Merci beaucoup, j'observé que votre fin de script, mais l'animation d'opacité progressive est manquée. –