jQuery.cookie: нет обновления cookie, несмотря на очень простой код - PullRequest
0 голосов
/ 10 августа 2011

У меня просто есть меню с блоками, которые можно скрыть. Чтобы запомнить их состояние во время посещения, я решил использовать jQuery.cookie () Мой код очень прост:

jQuery(document).ready(function(){
    $(".titre_acordeon").next().hide();
    $(".titre_acordeon").each(function () {
        jQuery.cookie($(this).parent().attr("id"),false, {path: "/"});
    });
    $(".titre_acordeon_0").next().show();
    $(".titre_acordeon_0").each(function () {
        jQuery.cookie($(this).parent().attr("id"),true, {path: "/"});
    });
});
jQuery(document).ready(function(){
    $(".titre_acordeon, .titre_acordeon_0").click(function() {
        $(this).next().toggle("medium");
        var id = $(this).parent().attr("id");
        var valeur_id = jQuery.cookie(id);
        alert(valeur_id)
        if ( valeur_id == true)
        {
            jQuery.cookie(id, false, {path: "/"});
        }
        else if ( valeur_id == false)
        {
            jQuery.cookie(id, true, {path: "/"});
        }
        alert(jQuery.cookie(id))
    });
});

» Как не исключено, значения cookie никогда не меняются: показ / скрытие работает, если я изменяю «if (valeur_id == true)» на «if (valeur_id)», cookie меняются, но только один раз

Я так отчаялся! это должно быть легко!

Спасибо за чтение!

1 Ответ

2 голосов
/ 10 августа 2011

Если вы используете этот «плагин»

https://github.com/carhartl/jquery-cookie/blob/master/jquery.cookie.js

Ваша проблема в том, что вы записываете логическое значение в свой файл cookie, которое переводится в строку при записи в файл cookie. Чтение обратно из куки не переводит наоборот. Поэтому независимо от того, положили ли вы в файл cookie true или false, ваш чек на

if ( valeur_id == true)

всегда имеет логическое значение true. Это потому, что "true" и "false" являются строками, которые в такой проверке оцениваются как "правдивые".

Если вы хотите придерживаться этой библиотеки, вам следует записать строки в файл cookie и ожидать, что строки будут прочитаны.

$.cookie( 'cookieName', 'true' );

И

if ( $.cookie( 'cookieName' ) === 'true' )

Важное примечание:

Кроме того, если вы запустите весь пример кода на своей странице, вы никогда не увидите результат нажатия на чтение файла cookie при перезагрузке страницы. Ваш первый блок кода перезаписывает все, что было установлено щелчками на предыдущей странице.

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