2011-10-13 1 views

Répondre

2

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.

0

Essayez-le.

http://jsfiddle.net/JHgvK/2/

Je ne sais pas si vous vouliez les autres cases à l'effondrement quand on a cliqué sur la boîte.

Je n'ai pas utilisé slideToggle, au cas où vous vouliez faire quelque chose d'autre pour chaque état

+1

Merci beaucoup, j'observé que votre fin de script, mais l'animation d'opacité progressive est manquée. –