我正在尝试使用jquery cookie插件来有效地“记住”jscrollpane插件创建的滚动窗格的位置。
基本上我希望jscrollpane查看cookie并根据保存的值设置初始的horiztonal位置。然后在更改位置时更新cookie。
我开始使用数组,但现在正在使用对象。关键是div #id,我编码以反映它显示的帖子的类别......这样它将是唯一的。键的值是jscrollpane踢出的水平位置。
我认为最好将我想要存储为cookie的对象转换为JSON字符串,但是当我尝试使用JSON.parse(cookie)将其转换回对象时,我会在IE中获得语法错误铬。
jQuery(function($){
//load the cookie
var cookie = $.cookie('xpos');
//Load the saved values or a new array if null.
var xpositions = cookie ? JSON.parse(cookie) : new Object();
console.log(xpositions);
// Loop over each scroll-pane
$( ".scroll-pane" ).each( function( index ){
$(this).jScrollPane({showArrows: true, autoReinitialise: true}); //initialize jscrollpane
var api = $(this).data('jsp'); //access jscrollpane api
//var catID = parseInt($(this).attr('id').match(/[0-9]+/)); //grab cat_ID which we've stored as part of the div id#
var catID = $(this).attr('id');
if( typeof xpositions[catID] != "undefined" ) {
console.log(catID +" = element exists in array and position = " + xpositions[catID] );
api.scrollToX(xpositions[catID]); //set scroll-pane position to position saved in cookie
}
$(this).bind('jsp-scroll-x',function(event, scrollPositionX){ //change cookie on scroll event
xpositions[catID] = scrollPositionX;
console.log(catID + " = " + scrollPositionX);
//set the cookie with array of x-positions, expires after 7 days
$.cookie('xpos', JSON.stringify(xpositions), { expires: 7, path: '/' });
}
);
}); //end each
});
您可以在此处查看实时版本:http://www.testtrack.tv/
编辑:我还应该提一下,这似乎可以在我的本地XAMPP服务器上运行,但仍然无法正常运行。谢谢!
编辑:为什么在SO上发帖似乎指向了一个更好的方向?我已经找到了jookie插件,只是在我的对象中没有使用cookie插件失败了。
http://joncom.be/code/jquery-jookie/
我的新代码是这样的:
// initialise a cookie that lives for 1 week
$.Jookie.Initialise("xposition", 60*24*7);
// Loop over each scroll-pane
$( ".scroll-pane" ).each( function( index ){
$(this).jScrollPane({showArrows: true, autoReinitialise: true}); //initialize jscrollpane
var api = $(this).data('jsp'); //access jscrollpane api
var catID = $(this).attr('id');
var xpos = $.Jookie.Get("xposition", catID);
if(xpos) {
api.scrollToX(xpos); //set scroll-pane position to position saved in cookie
}
$(this).bind('jsp-scroll-x',function(event, scrollPositionX){ //change cookie on scroll event
// set a value to the cookie
$.Jookie.Set("xposition", catID, scrollPositionX);
}
);
}); //end each
答案 0 :(得分:1)
xpos=%7B%22cat-45%22%3A0%2C%22cat-48%22%3Anull%7D
当我访问您的网页时,您设置为我的Cookie; JSON解析器无法解析它。你希望它是xpos = {..对象东西在这里..}。
基本上,如果你不能手动将字符串复制到变量中,解析器就会遇到麻烦。
答案 1 :(得分:1)
您是否尝试过评估?
if (cookie !== null) {
var jsoncookie = eval("("+cookie +")"); // $.parseJSON(cookie );
}