jquery 带有 cookie 的滑块
jquery slider with cookie
我正在尝试将 cookie 添加到 jquery 滑块,它工作正常,直到我刷新页面并在滑块中向后移动(当添加 cookie 中的值时(valuevalue)而不是添加(值+值)。
错误发生在 slideMargin += width(如果不涉及 cookie 则有效),如果我将其更改为 slideMargin -= width 它工作正常但方向错误。
代码:
jQuery(document).ready(function($) {
$(function () {
var $slider = $('#slider');
var $slideContainer = $('.slides', $slider);
var $slides = $('.slide', $slider);
var slideMargin = readCookie('slide');
var width = 770;
var slidesLength = ($slides.length-2)*770;
document.onload = checkCookie();
$('#next-gal')
.on('click', nextGal);
$('#prev-gal')
.on('click', prevGal);
function nextGal() {
slideMargin -= width;
createCookie('slide', slideMargin,1);
$slideContainer.animate({'margin-left':(slideMargin)},1000,function() {
if (slideMargin === (-Math.abs(($slides.length-1)*770))) {
slideMargin = -Math.abs(width);
$slideContainer.css('margin-left', -width);
}
});
}
function prevGal() {
slideMargin += width;
createCookie('slide', slideMargin,1);
$slideContainer.animate({'margin-left':(slideMargin)},1000,function() {
if (slideMargin === 0) {
slideMargin = -Math.abs(slidesLength);
$slideContainer.css('margin-left', -Math.abs(slidesLength));
}
});
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function checkCookie() {
if (slideMargin != null) {
$slideContainer.css('margin-left', -Math.abs(slideMargin));
createCookie('slide', slideMargin,1);
}
else {
createCookie( 'slide', -1540 ,1);
slideMargin = -770;
$slideContainer.css('margin-left', -Math.abs(slideMargin));
}
}
});
});
我们很乐意收到任何帮助。
拉斯
您从页面的 cookie 中读取的值将是一个字符串。我怀疑在开始在方程式中使用它之前,您需要将其转换为一个数字 - 否则您会得到一些奇怪的东西...
我会替换这个:
var slideMargin = readCookie('slide');
和
var slideMargin = parseInt(readCookie('slide')) || 0; // if no cookie value, or if it's not a number, default to zero
希望对您有所帮助!
我正在尝试将 cookie 添加到 jquery 滑块,它工作正常,直到我刷新页面并在滑块中向后移动(当添加 cookie 中的值时(valuevalue)而不是添加(值+值)。
错误发生在 slideMargin += width(如果不涉及 cookie 则有效),如果我将其更改为 slideMargin -= width 它工作正常但方向错误。
代码:
jQuery(document).ready(function($) {
$(function () {
var $slider = $('#slider');
var $slideContainer = $('.slides', $slider);
var $slides = $('.slide', $slider);
var slideMargin = readCookie('slide');
var width = 770;
var slidesLength = ($slides.length-2)*770;
document.onload = checkCookie();
$('#next-gal')
.on('click', nextGal);
$('#prev-gal')
.on('click', prevGal);
function nextGal() {
slideMargin -= width;
createCookie('slide', slideMargin,1);
$slideContainer.animate({'margin-left':(slideMargin)},1000,function() {
if (slideMargin === (-Math.abs(($slides.length-1)*770))) {
slideMargin = -Math.abs(width);
$slideContainer.css('margin-left', -width);
}
});
}
function prevGal() {
slideMargin += width;
createCookie('slide', slideMargin,1);
$slideContainer.animate({'margin-left':(slideMargin)},1000,function() {
if (slideMargin === 0) {
slideMargin = -Math.abs(slidesLength);
$slideContainer.css('margin-left', -Math.abs(slidesLength));
}
});
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function checkCookie() {
if (slideMargin != null) {
$slideContainer.css('margin-left', -Math.abs(slideMargin));
createCookie('slide', slideMargin,1);
}
else {
createCookie( 'slide', -1540 ,1);
slideMargin = -770;
$slideContainer.css('margin-left', -Math.abs(slideMargin));
}
}
});
});
我们很乐意收到任何帮助。
拉斯
您从页面的 cookie 中读取的值将是一个字符串。我怀疑在开始在方程式中使用它之前,您需要将其转换为一个数字 - 否则您会得到一些奇怪的东西...
我会替换这个:
var slideMargin = readCookie('slide');
和
var slideMargin = parseInt(readCookie('slide')) || 0; // if no cookie value, or if it's not a number, default to zero
希望对您有所帮助!