Jquery ustrzymanie stanu toggle po odświeżeniu

Witam! Mam skrypt rozwijający diva wiecej po kliknięciu wiecejbutton , lecz po odświeżeniu strony nie zapamietuje że był rozwinięty. Kod wyglada tak:

$(document).ready(function() 

					{


						$("div#wiecejbutton").click(function () 

						{						

						$("div#wiecej").toggle("slow");

						if($("span#wiecejtekst").text()=="Mniej opcji")

							{

							    $("span#wiecejtekst").text("Więcej opcji");

							}

							else

							{

							     $("span#wiecejtekst").text("Mniej opcji");

							}

						});

					});

Próbowałem to zmienić w taki sposób, ale nie dziala. gdzie jest błąd?

$(document).ready(function() 

					{

					var openToggle = getCookie("open") || false;

					if ( openToggle )

					    $("div#wiecej").show();

					else

					    $("div#wiecej").hide();


						$("div#wiecejbutton").click(function () 

						{

						 var closed = $("div#wiecej").is(":hidden");

						    if ( closed )

						       {

							       $("div#wiecej").toggle("slow");

								if($("span#wiecejtekst").text()=="Mniej opcji")

								{

								    $("span#wiecejtekst").text("Więcej opcji");

								}

								else

								{

								     $("span#wiecejtekst").text("Mniej opcji");

								}

							}

						    else

							$("div#wiecej").hide();

						    setCookie("open", !closed, 365 );


						});

					});

Jeśli to twój cały js, to używasz nieistniejących funkcji. Jeśli nie, podaj kod funkcji z których korzystasz (możesz tam mieć błędy).

sth || false <- bez sensu, bo to to samo co sth

O ile twój pierwszy kod jest ok, to drugi całkowicie przeczy temu pierwszemu (wszystko co dołożyłeś to błąd) :slight_smile:

Twój kod powinien się sprowadzić

jeśli ciastko 1 to click, a click zmienia ciastko na 1 lub 0 (przy zmianie napisu)

No właśnie coś z tym jquery cookie mi nie działa :confused: A podlinkowane jest dobrze…

A dało by się to jakoś zrobić bez ciastek?

Pokaż funkcję getCookie i setCookie. Czy tych divów może być więcej niż jeden na stronie?

Cookies brałem z tego pluginu : https://github.com/carhartl/jquery-cookie

Takie divy są jedyne

Na pewno? Bo widzisz… w linku, który podałeś cookie pobiera się tak:

$.cookie(‘open’);

a ty to robisz tak:

getCookie(“open”)

natomiast ustawia się tak:

$.cookie(‘open’, ‘!closed’, { expires: 365 });

a ty ustawiasz tak:

setCookie(“open”, !closed, 365 );

Więc… coś jakby jest nie tak, nie uważasz?

Nawet po zmianie to nic nie daje :confused: W ogóle nie działa plugin. Rozpakował się katalog “jquery-cookie-master” i linkuję go w ten sposób

Niestety nawet przy dodaniu do jakiegokolwiek skryptu

$.cookie('the_cookie', 'the_value');

to to nie działa :confused:

Dodane 14.09.2013 (So) 9:57

A bez tych ciastek z jquery się nie da tego jakoś zrobić?

Musisz gdzieś mieć zapisaną zmienną, sesja / baza / ciastko innego wyjścia nie ma.

Co do samego linkowania, jeśli masz indeks w folderze gdzie masz folder z pluginem to linkujesz tak:

./jquery-cookie-master/jquery.cookie.js

Jeśli nie podaj strukturę katalogów. Swoją drogą dlaczego uważasz że nie działa ? :stuck_out_tongue:

Podaj cały kod / link do strony.

Dodane 14.09.2013 (So) 10:52

Wrzuć do document ready:

$.cookie('the_cookie', 'costam');

alert($.cookie('the_cookie'));

Jeśli dostaniesz alert costam to działa, jeśli nie sprawdź konsolę js, lub daj to co chciałem wyżej

Mam katalog Strona a w nim plik index.php oraz katalog jquery-cookie-master

Ten kod który podałeś właśnie nie działa :confused:

Całego kodu nie mam jak podać bo to jest ponad 300 linijek

To może by link do strony?

Też nie mam jak bo serwer na razie stawiam tylko lokalnie

Tutaj kod index.php : http://jsbin.com/UmIjOFa/2/edit?html,output

Masz cookie/jquery.cookie.js a nie jquery-cookie-master/jquery.cookie.js

Zmieniłem ale to też nie działa…

Odpal firebuga i sprawdź konsolę i sieć, czy aby wszystko ładuje się jak trzeba…