Question

Sur la base de ma précédente question et ici , je trouve que je peux mettre un cookie avec javascript. Je veux combiner avec jquery d'avoir un ensemble d'état du cookie pour les lignes de table basculés. Je veux garder les lignes cachées cachées sur reload.

Voici ce que j'ai accompli jusqu'à présent:

// Load cookies if any   
if(readCookie('togState')) {
       $('table#toggle tr.' + readCookie('togState')).hide();
    }

    $(function() {
        $('table#toggle tr.container').click(function() {
          var idTog = $(this).attr('id');
            $(this).toggleClass('off').nextAll('.' + idTog).toggle();
            setCookie('togState', idTog, 30);
            alert('Cookies: ' + readCookie('togState'));
        });

});

Le parent: <tr id="parent-1" class="container">

Les enfants suivants: <tr class="contained parent-1">, etc

Comme vous pouvez le voir le cookie est lu, mais n'est pas mis sur l'actualisation du navigateur. Qu'est-ce que je fais mal?

Ce que je veux cacher toutes les lignes basculés (ayant leurs classes égales à conteneur de leurs parents ID), si le conteneur parent est cliqué, et donc le cookie.

Toute aide serait très apprécié. Merci.

Le cookie source je pour vérification rapide:

function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    setCookie(name,"",-1);
}

Mise à jour:

J'ai aussi essayé chaque fonction à pas de chance:

$('table#toggle tr.' + readCookie('togState')).each(function() {
     $(this).hide();
   });

Mise à jour 2:

Si je place le chèque à l'intérieur jquery (je cacher ()), il fonctionne, , mais seulement pour un seul cookie. Le problème réel est maintenant comment garder plus les cookies pour plus de lignes de parent?

Était-ce utile?

La solution

Si vous utilisez la fonction de setCookie() cette réponse , vous configurez votre cookie pour avoir une durée de vie de 30 secondes. C'est probablement pas assez longtemps pour que vos besoins, et vous devriez probablement à l'augmenter légèrement. : -)

EDIT Re: modifier votre question - Si vous essayez de définir plusieurs cookies, vous aurez un problème avec la ligne suivante:

document.cookie = name+"="+value+expires+"; path=/";

Ici, vous écrasez la propriété cookie chaque fois que vous appelez setCookie(). Si vous souhaitez définir plusieurs cookies, vous devez préfixer / ajouter une nouvelle paire nom / valeur à la chaîne avec chaque appel à setCookie()

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top