demande corection toggle jquery

Par neecride, il y a 12 ans


Bonjour, J'utilise pour mon projet actuel un toogle pour ouvrir fermer ou cacher la sidebar droite la ça fonctionne pas de soucis ! La ou je sèche c'est pour le setcookie mon code js de base et celuis si : [code] $(document).ready(function(){ $(".icon-sort").click(function(){ $( this ).parent().next().slideToggle("slow"); }); }); [/code] avec ce code j'ouvre chaque bloc séparément maintenant je veut garder cette fonction, je vous donne un exemple : "j'ai trois bloc le 1 le 2 et le 3 je veut ouvrir le 1 et le 3 je passe par setcookie qui enregistre le choix donc je quitte le site et il reste ouvert pareil si je veut les fermer et ouvrir le 2 et vise ver ça." J'ai donc ce code qui fonctionne pour l'enregistrement mai tous les bloc s'ouvre en même temps : [code] $(document).ready(function () { $(".icon-sort").click(function () { var closed = $(".sidebar_container_right").is(":hidden"); if (closed) $(".sidebar_container_right").show(); else $(".sidebar_container_right").hide(); setCookie("open", closed, 365); }); var openToggle = getCookie("open"); if (openToggle=="true") { $(".sidebar_container_right").show(); } else { $(".sidebar_container_right").hide(); } }); function setCookie(c_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } function getCookie(c_name) { var i, x, y, ARRcookies = document.cookie.split(";"); for (i = 0; i

2 réponses

azerus, il y a 12 ans

Bonjour,

Tous les éléments conteneur de ta sidebar on la classe sidebar_container_right.

$(".icon-sort").click(function () {
        var closed = $(".sidebar_container_right").is(":hidden");
        if (closed)
            $(".sidebar_container_right").show(); // Je prends tous les elements qui ont la classe sidebar_container_right et je les affiche
        else
            $(".sidebar_container_right").hide(); // Je prends tous les elements qui ont la classe sidebar_container_right et je les cache

        ......
    });

Il ne faut pas que tu fasses la selection par cette classe uniquement.
Tu peux rajouter un identifiant pour retrouver plus facilement quel est le container associé à l'entete.
Tu peux également sélectionner l'élément suivant l'élément parent du this

$(".icon-sort").click(function () {
      $(this).parent().next().toggle();
        ......
    });

La methode toggle() permet d'alterne automatiquement entre show et hide.

Azerus

neecride, il y a 12 ans

Merci de votre réponse.

Je n'ai pas trop compris j'ai essayé pleins de permutation mai ça ne fait jamais ce que j'attend