Вопрос

Судя по моему предыдущему вопросу здесь и здесь, я обнаружил, что могу установить файл cookie с помощью JavaScript.Я хочу объединить его с jquery, чтобы установить состояние cookie для переключаемых строк таблицы.Я хочу, чтобы скрытые строки были скрыты при перезагрузке.

Вот чего я достиг на данный момент:

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

});

Родитель: <tr id="parent-1" class="container">

Следующие дети: <tr class="contained parent-1"> , и т. д

Как вы можете видеть, файл cookie считывается, но не устанавливается при обновлении браузера.Что я делаю не так?

Я хочу скрыть все переключаемые строки (их классы равны идентификатору родительского контейнера), если щелкнуть родительский контейнер и установить файл cookie.

Любая помощь будет очень высоко ценится.Спасибо.

Исходный файл cookie, который я использовал для быстрой проверки:

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

ОБНОВЛЯТЬ:

Я также пробовал каждую функцию, но безуспешно:

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

ОБНОВЛЕНИЕ 2:

Если я помещу проверку внутри jquery (я использовал скрытие()), оно работает, но только для одного файла cookie.Итак, реальная проблема сейчас заключается в том, как сохранить больше файлов cookie для большего количества родительских строк?

Это было полезно?

Решение

Если вы используете setCookie() функция от этот ответ, вы устанавливаете срок действия файла cookie 30 секунд.Вероятно, этого недостаточно для ваших требований, и вам, вероятно, следует подумать о том, чтобы немного увеличить его.:-)

РЕДАКТИРОВАТЬ Ре:отредактируйте ваш вопрос. Если вы пытаетесь установить несколько файлов cookie, у вас возникнет проблема со следующей строкой:

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

Здесь вы перезаписываете cookie недвижимость каждый раз, когда вы звоните setCookie().Если вы хотите установить несколько файлов cookie, вам необходимо добавить в строку новую пару имя/значение при каждом вызове setCookie()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top