stanek.94
(stanek.94)
#1
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 );
});
});
drobok
(Drobok)
#2
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)
Twój kod powinien się sprowadzić
jeśli ciastko 1 to click, a click zmienia ciastko na 1 lub 0 (przy zmianie napisu)
stanek.94
(stanek.94)
#3
No właśnie coś z tym jquery cookie mi nie działa A podlinkowane jest dobrze…
A dało by się to jakoś zrobić bez ciastek?
tfl
(Konrad Kosowski)
#4
Pokaż funkcję getCookie i setCookie. Czy tych divów może być więcej niż jeden na stronie?
stanek.94
(stanek.94)
#5
Cookies brałem z tego pluginu : https://github.com/carhartl/jquery-cookie
Takie divy są jedyne
tfl
(Konrad Kosowski)
#6
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?
stanek.94
(stanek.94)
#7
Nawet po zmianie to nic nie daje 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
– Dodane 14.09.2013 (So) 9:57 –
A bez tych ciastek z jquery się nie da tego jakoś zrobić?
drobok
(Drobok)
#8
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 ?
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
stanek.94
(stanek.94)
#9
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
Całego kodu nie mam jak podać bo to jest ponad 300 linijek
tfl
(Konrad Kosowski)
#10
To może by link do strony?
stanek.94
(stanek.94)
#11
Też nie mam jak bo serwer na razie stawiam tylko lokalnie
Tutaj kod index.php : http://jsbin.com/UmIjOFa/2/edit?html,output
drobok
(Drobok)
#12
Masz cookie/jquery.cookie.js a nie jquery-cookie-master/jquery.cookie.js
stanek.94
(stanek.94)
#13
Zmieniłem ale to też nie działa…
tfl
(Konrad Kosowski)
#14
Odpal firebuga i sprawdź konsolę i sieć, czy aby wszystko ładuje się jak trzeba…