Условные обозначения Javascript на основе файлов cookie

#javascript #jquery #cookies

#javascript #jquery #файлы cookie

Вопрос:

Я пытаюсь настроить некоторые условные операторы, которые определяют, был ли установлен файл cookie при загрузке страницы, и применяет некоторые классы к div на основе значения этого файла cookie:

 <script>
        $(function(){   
            if ($.cookie('view_size', 'large')) {
                $('#primary').removeClass('medium_content');
                $('#primary').addClass('large_content');
            };

            if ($.cookie('view_size', 'medium')) {
                $('#primary').removeClass('large_content');
                $('#primary').addClass('medium_content');
            };

            if ($.cookie('view_size', 'small')) {
                $('#primary').removeClass('large_content');
                $('#primary').removeClass('medium_content');
            };
        });
        </script>
  

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

Комментарии:

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

2. Отсутствует поведение, никакие классы не применяются или не удаляются. Имя файла cookie — ‘view_size’, а возможные значения: ‘large’, ‘medium’ и ‘small’. Значения файлов cookie успешно сохраняются и изменяются, поэтому проблема, должно быть, в том, как это настроено.

3. Сначала попробуйте запустить Firebug; вы можете увидеть сообщения об ошибках, и вы можете установить точку останова и посмотреть, вызывается ли ваш код вообще. Во-вторых, вы уверены, что файл cookie установлен при первой загрузке страницы? Эта функция будет вызвана только один раз, при загрузке страницы.

4. Итак, я получаю сообщение об ошибке: «$.cookie не является функцией, если ($.cookie (‘view_size’) ==’large’) { » Но когда я проверяю файлы cookie в инспекторе страниц, они успешно устанавливаются. Очень загадочно…

Ответ №1:

Я считаю, что синтаксис

 $.cookie('view_size', 'large')
  

это способ, которым вы создаете файл cookie, и он не предназначен для проверки значения файла cookie. Я полагаю, вы хотите

 if ($.cookie('view_size')=='large')
  

Комментарии:

1. Хмм, похоже, все еще не срабатывает. Правильно ли я его инициализирую? Должен ли я добавить document.onload или что-то еще?

2. $ (), обернутый вокруг вашей функции, является сокращением jQuery для $ (document). ready(), так что этого должно быть достаточно.