Domanda

In base alla mia precedente domanda qui e qui , ho scoperto che posso impostare un cookie con javascript. Voglio combinare con jQuery per avere un set di stato di cookie per le righe della tabella commutato. Voglio mantenere le righe nascoste nascoste su di ricarica.

Ecco quello che ho ottenuto finora:

// 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'));
        });

});

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

Il seguente figli: <tr class="contained parent-1">, etc

Come si può vedere il cookie viene letto, ma non è impostato su di aggiornamento del browser. Che cosa sto facendo di sbagliato?

Quello che voglio è nascondere le righe commutate (con le loro classi pari a ID contenitore dei genitori), se il contenitore principale viene cliccato, e così il cookie viene impostato.

Qualsiasi aiuto sarebbe molto apprezzato. Grazie.

La fonte biscotto che ho usato per rapido controllo:

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);
}

UPDATE:

Inoltre ho provato ogni funzione a nessuna fortuna:

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

UPDATE 2:

Se metto il controllo interno jquery (io ho usato hide ()), funziona, , ma solo per un singolo cookie. Quindi il vero problema ora è come mantenere più cookie per ulteriori righe padre?

È stato utile?

Soluzione

Se si utilizza la funzione setCookie() da questa risposta , si sta impostando il cookie di avere una vita di 30 secondi. Questo è probabilmente non abbastanza a lungo per le vostre esigenze, e probabilmente si dovrebbe guardare ad aumentare sempre leggermente. : -)

Modifica Re: la tua domanda modifica - Se stai cercando di impostare più cookie, avrete un problema con la seguente riga:

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

Qui, si sta sovrascrivendo la proprietà cookie ogni volta che si chiama setCookie(). Se si desidera impostare più cookie, è necessario anteporre / appendere una nuova coppia nome / valore per la stringa con ogni chiamata a setCookie()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top