Masquer ou afficher un bloc avec jquery

Le but est d'afficher ou de masquer un bloc, en cliquant sur un lien, un objet, etc.

Cas simple : un lien et une balise <div>

<script>
$(document).ready(function() {
    var documentChangeShow = 0;
    $('#documentChange').hide("") ;
    $('#documentChangeActivate').click(function () {
        if (documentChangeShow == 0) {
            $('#documentChange').show("");
            documentChangeShow = 1 ;
        } else {
            $('#documentChange').hide("");
            documentChangeShow = 0 ;
        }
    });
} ) ;
</script>
<a href="#" id="documentChangeActivate">afficher/masquer...</a>
<div id="documentChange">
(...)
</div>

Cas complexe : utilisation de fieldsets

Chaque fieldset est masquable indépendamment, et un lien permet de les masquer tous. La position (boites masquées ou non) est stockée dans un cookie, valable uniquement pendant la session (nécessite la récupération d'un module jquery complémentaire, à télécharger dans le site http://plugins.jquery.com/cookie/).

<script type="text/javascript" charset="utf-8" src="javascript/carhartl-jquery-cookie-3caf209/jquery.cookie.js"></script>
<script>
$(document).ready(function() {
    /*
    * Gestion de l'affichage
    */
    var afficher = $.cookie("moduleAfficher");
    if (isNaN(afficher)) afficher = 1;
    if (afficher == 1) {
        $("#afficher").text("Masquer tous les éléments");
    } else {
        $("#afficher").text("Afficher tous les éléments");
        $ ("fieldset > .masquage").hide("");
    }
    $ (".fsMasquable legend").click(function() {
        if ($(this).nextAll(".masquage") .is (":visible") == true ) {
            $(this).nextAll(".masquage").hide("10");
        } else {
            $(this).nextAll(".masquage").show ("10");
        }
    } );
    $("#afficher").click(function() {
        if (afficher == 0) {
            $( this ).text("Masquer tous les éléments") ;
            afficher = 1 ;
            $ ("fieldset > .masquage").show("");
        } else {
            $ (this ).text ("Afficher tous les éléments") ;
            afficher = 0;
            $ ("fieldset > .masquage").hide("");
        }
        $.cookie("moduleAfficher", afficher);
    } );
} );
</script>
<div id="afficher" class="masquageText">Afficher tous les éléments</div>
<fieldset class="fsMasquable">
<legend>Première boite</legend>
<div class="masquage">
(...)
</div>
</fieldset>
<fieldset class="fsMasquable">
<legend>Seconde boite</legend>
<div class="masquage">
(...)
</div>
</fieldset>

Le script peut être complété par les styles CSS suivants, ce qui permet de souligner la légende, de changer le curseur, et de rajouter une icône à gauche :

.fsMasquable legend {
    background-image: url("images/up_down.png");
    background-repeat: no-repeat;
    background-position: left;
    padding-left: 25px;
    height: 20px;
    cursor: pointer;
    fontStyle: italic;
    text-decoration: underline;
}
.masquageText {
    background-image: url("images/up_down.png");
    background-repeat: no-repeat;
    background-position: left;
    padding-left: 25px;
    height: 20px;
    cursor: pointer;
    fontStyle: italic;
    text-decoration: underline;
}