Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   JQuery и Cookie (https://javascript.ru/forum/jquery/5470-jquery-i-cookie.html)

Илья Query 17.10.2009 09:46

JQuery и Cookie
 
Всем доброго времени суток!

Не могу разобраться с JQuerty и cookie. Буду признателен за помощь.

<script>
jQuery(function() {
$("#hideshow").toggle(function() {
$(".second_inner").animate({"width": 700}, "fast");
}, function() {
$(".second_inner").animate({"width": 500}, "fast");
});
});
</script>


Суть:

0. Есть блок шириной = 500px;
1. Кликаем на кнопку 1 раз; // $("#hideshow").toggle(function() {
2. Ширина блока меняется с 500px до 700px; // $(".second_inner").animate({"width": 700}, "fast");
3. Обновляем страницу;
4. Ширина блока теперь = 700px.

Т.е. проще говоря необходимо чтобы при перезагрузке страницы запоминалась установленная ширина блока (в зависимости от того, что накликали). Добавьте пожалуйста сюда cookie.

Заранее благодарен за помощь.

mcpro 20.10.2009 16:18

Думаю вот это тебе должно помочь
http://plugins.jquery.com/project/cookie
http://www.linkexchanger.su/2008/42.html

x-yuri 21.10.2009 05:05

а что это за блок? Может можно сделать, чтобы у пользователя сразу была адекватная ширина?

Илья JQuery 26.10.2009 19:20

Проблемка с JQuery
 
Цитата:

Сообщение от x-yuri (Сообщение 33012)
а что это за блок? Может можно сделать, чтобы у пользователя сразу была адекватная ширина?

Да дело не в ширине. Я просто на примере хочу понять как поставить куки для сайта. Из статьи http://www.linkexchanger.su/2008/42.html не всё понятно, может подкинете несколько примеров? Буду признателен.

x-yuri 27.10.2009 05:32

что непонятно из статьи?

Илья JQuery 27.10.2009 07:29

Не работает пример
 
Цитата:

Что непонятно из статьи?
2x-yuri: Не могу разобраться по какой причине не работает код.

Вот ссылка http://banki72.ru/banks/. Для кнопок скрыть / отобразить не работают cookie.

<script>
jQuery(function() {

	$.cookie("mycookie"); // получаем куки

	$("#hide_show_left").toggle(function() {
			$("#hide_show_left").text(' отобразить');
			$("#hide_show_left_img").attr({src:"/images/right.gif"});
			$(".first").hide("fast");
			$(".second_inner").animate({"width": 702}, "slow");
			$.cookie("mycookie", $(".second_inner").css('display', 'none')); // устанавливаем куки
	}, function() {
			$("#hide_show_left").text(' скрыть');
			$("#hide_show_left_img").attr({src:"/images/left.gif"});
			$(".second_inner").animate({"width": 519}, "fast");
			$(".first").show("slow");
			$.cookie("mycookie", null); // удаляем куки
	});
});
</script>

x-yuri 27.10.2009 08:46

а теперь пишем
$(".second_inner").animate({"width": 702}, "slow");
console.log($(".second_inner").css('display', 'none'));
            $.cookie("mycookie", $(".second_inner").css('display', 'none')); // устанавливаем куки
    }, function() {

и смотрим в консоль firebug'а
что ты в куки записать хочешь?

Илья JQuery 27.10.2009 09:54

Разбор примера
 
Нашёл ошибку, неверно был указан класс:
//вместо
$.cookie("mycookie", $(".[B]second_inner[/B]").css('display', 'none'));
//должно быть
$.cookie("mycookie", $(".[B]first[/B]").css('display', 'none'));

// т.е. код должен выглядеть вот так:

jQuery(function() {
 
    $.cookie("mycookie"); // получаем куки
 
    $("#hide_show_left").toggle(function() {
            $("#hide_show_left").text(' отобразить');
            $("#hide_show_left_img").attr({src:"/images/right.gif"});
            $(".first").hide("fast");
            $(".second_inner").animate({"width": 702}, "slow");
            $.cookie("mycookie", $(".[B]first[/B]").css('display', 'none')); // устанавливаем куки
    }, function() {
            $("#hide_show_left").text(' скрыть');
            $("#hide_show_left_img").attr({src:"/images/left.gif"});
            $(".second_inner").animate({"width": 519}, "fast");
            $(".first").show("slow");
            $.cookie("mycookie", null); // удаляем куки
    });
});


Но к сожалению, всё равно не работает.

//а теперь пишем
$(".second_inner").animate({"width": 702}, "slow");
[B]console.log($(".[B]first[/B]").css('display', 'none'));[/B]
            $.cookie("mycookie", $(".[B]first[/B]").css('display', 'none')); // устанавливаем куки
    }, function() {

Под рукой firebug к сожалению нет, вечером попробую.

Цитата:

что ты в куки записать хочешь?
2x-yuri: Зафиксировать:
  • Блок (.first). Скрыт (none) или отображен (block);
  • Размер изменённого блока (.second_inner). Width: '702' или '519'.

Илья JQuery 27.10.2009 10:17

Какое-то размытое сообщение получилось выше. Попробую исправится.

Исходный код:
jQuery(function() {
    $.cookie("mycookie"); // Получаем куки
    $("#hide_show_left").toggle(function() {
            $("#hide_show_left").text(' отобразить');
            $("#hide_show_left_img").attr({src:"/images/right.gif"});
            $(".first").hide("fast");
            $(".second_inner").animate({"width": 702}, "slow");
            $.cookie("mycookie", $(".first").css('display', 'none')); // Устанавливаем куки
    }, function() {
            $("#hide_show_left").text(' скрыть');
            $("#hide_show_left_img").attr({src:"/images/left.gif"});
            $(".second_inner").animate({"width": 519}, "fast");
            $(".first").show("slow");
            $.cookie("mycookie", null); // Удаляем куки
    });
});


Не получается с помощью cookie зафиксировать:
  • Блок .first. Скрыт (none) или отображен (block);
  • Размер изменённого блока .second_inner. Ширина (width): 702px или 519px.

Илья JQuery 27.10.2009 19:29

Вот что в отразилось в консоли:

Код:

Object length=1 0=div.colum prevObject=Object jquery=1.2.3

x-yuri 27.10.2009 22:56

Цитата:

Сообщение от Илья JQuery
Какое-то размытое сообщение получилось выше. Попробую исправится.

есть кнопка редактирования

в куках храняться строки. Да и незачем там объекты хранить, если тебе не все их содержимое нужно

Илья JQuery 28.10.2009 06:55

Цитата:

есть кнопка редактирования
Не было возможности, зарегистрировался 1 сообщение назад.

Цитата:

в куках храняться строки
В моём случае это сроки настроек для css?

Цитата:

Да и незачем там объекты хранить, если тебе не все их содержимое нужно.
К сожалению не понял, что делать со скриптом.

x-yuri 28.10.2009 10:34

$.cookie("mycookie", 'строка');
alert($.cookie("mycookie"));
var o = {a: 2, b: 'asd'};
$.cookie("mycookie", o);
alert($.cookie("mycookie"));
$.cookie("mycookie", o.a);
alert($.cookie("mycookie"));

Илья JQuery 28.10.2009 12:10

Цитата:

$.cookie("mycookie", 'строка');
alert($.cookie("mycookie"));
var o = {a: 2, b: 'asd'};
$.cookie("mycookie", o);
alert($.cookie("mycookie"));
$.cookie("mycookie", o.a);
alert($.cookie("mycookie"));

[object Object] => [object Object] => 2

x-yuri 28.10.2009 13:08

в каком это браузере у тебя такие результаты и какая версия jQuery, jquery.cookie.js?

Илья JQuery 28.10.2009 13:15

Цитата:

Сообщение от x-yuri (Сообщение 33720)
в каком это браузере у тебя такие результаты

Firefox, версия 3.5.3

Цитата:

и какая версия jQuery, jquery.cookie.js?
Да, всё верно. Вот ссылка на источник http://plugins.jquery.com/project/Cookie


Часовой пояс GMT +3, время: 12:28.