Pregunta

Con base en mi pregunta anterior aquí y aquí , he encontrado que puedo establecer una cookie con javascript. Quiero combinarlo con jQuery tener un conjunto de galletas estado de filas de la tabla activar y desactivar. Quiero mantener las filas ocultas ocultos tras la recarga.

Esto es lo que he conseguido hasta ahora:

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

});

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

Los siguientes hijos: <tr class="contained parent-1">, etc.

Como se puede ver la cookie se lee, pero no está ajustado al actualizar el navegador. ¿Qué estoy haciendo mal?

Lo que quiero es ocultar las filas toggled (que tienen sus clases son iguales a ID de contenedor de sus padres), si se hace clic en el contenedor padre, y así se establece la cookie.

Cualquier ayuda sería muy apreciada. Gracias.

La cookie fuente que utilicé para comprobación rápida:

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

ACTUALIZACIÓN:

También he intentado cada función a ninguna suerte:

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

ACTUALIZACIÓN 2:

Si coloco el cheque dentro de jQuery (que utiliza ocultar ()), funciona, , pero sólo para una sola galleta. Así que el problema real es ahora cómo mantener más cookies para más filas primarias?

¿Fue útil?

Solución

Si está utilizando la función de setCookie() href="https://stackoverflow.com/questions/2253758/how-to-delete-all-cookies-with-jquery/2253820#2253820"> esta respuesta , se está configurando la cookie para tener una vida útil de 30 segundos. Eso es probablemente no lo suficiente para sus necesidades, y que probablemente debería mirar a aumentarla ligeramente. : -)

Editar Re: editar su pregunta - Si usted está tratando de establecer varias cookies, usted tiene un problema con la siguiente línea:

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

A continuación, se desea sobreescribir la propiedad cookie cada vez que llame setCookie(). Si desea establecer múltiples cookies, deberán estar precedidos / Anexar un nuevo par nombre / valor a la cadena con cada llamada a setCookie()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top