#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(), так что этого должно быть достаточно.