Скрыть строки таблицы, если там есть Cookie - PullRequest
1 голос
/ 30 марта 2010

Исходя из моего предыдущего вопроса здесь и здесь , я обнаружил, что могу установить 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 (я использовал hide ()), работает, , но только для одного cookie. Таким образом, актуальная проблема сейчас заключается в как сохранить больше файлов cookie для большего количества родительских строк?

1 Ответ

0 голосов
/ 30 марта 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...