Jquery - 加载cookie数据

时间:2011-09-25 15:52:10

标签: jquery cookies background load

考虑缩略图列表,用户从中单击一个缩略图以更改背景图像。以下脚本允许用户选择背景图像并应用它。

$(function() {
        $('.themes li a img').click(function() {
            var image = 'imgs/someimage.jpg';
            //Set cookie
            function setCookie(){
                $.cookie("html_img", image, {expires:7});
                var a = $.cookie('html_img');//get cookie value
                return a;
            }
       });
});

另一个名为loadCookie.js的脚本会在用户访问其他网页时加载包含所选背景的Cookie:

$(function() {
        var startImage='';
        startImage = setCookie();
        $(document).ready(function(){
            $('html').css("background", startImage);
        });
    });

IE8说'对象不支持这个动作,第3行';已安装Jquery cookie插件。我知道我找不到一些小错误。非常感谢任何使脚本有效的帮助。

2 个答案:

答案 0 :(得分:2)

不是100%你想做什么,但我认为这就是你所追求的(假设你正在使用jquery.cookie.js):

$(function() {

    if($.cookie("html_img")) {
        $('html').css("background", $.cookie("html_img"));
    }

    $('.themes li a img').click(function() {

        var image = 'imgs/someimage.jpg';
        // var image = $(this).attr('src');

        $('html').css("background", image);

        $.cookie("html_img", image, {expires:7});

        return false;

    });

});

答案 1 :(得分:2)

由于这是关于相同代码(前一个herehere)发布的第三个问题,您似乎对此代码以及使用堆栈溢出的正确方法感到困惑。

以下是Cookie的一般工作方式。在一个页面上,您设置了一个cookie。在后续页面上,您可以阅读该cookie并使用它的价值。

在此代码示例中,您将第一个代码块中的cookie设置为背景图像。到目前为止,非常好。

在第二个代码块中,您再次调用setCookie。如果要从cookie中检索背景图像,则需要获取cookie值,而不是设置它。你的代码应该是这样的:

$(document).ready(function() {
    // initialize background from cookie
    var startImage = $.cookie("html_img");   // get cookie value
    if (startImage) {
        $(document.body).css("background-image", startImage);
    }

    // install click handler to change background
    $('.themes li a img').click(function() {
        var newBackground = 'imgs/someimage.jpg';
        $(document.body).css("background-image", newBackground);
        $.cookie("html_img", newBackground, {expires:7});  // save in cookie
   });
});

您可能还需要知道,如果您没有为path: '/'这样的Cookie指定路径选项,则Cookie只能在当前路径上读取,而不能在您网站的其他位置读取。该jQuery附加cookie库的文档是here

至于使用stackoverflow,你应该问一个关于特定代码的明确问题,当受访者感到困惑或提供不是你想要问的答案时,你应该适当地澄清你的问题,直到你得到一个合适的答案。请记住,当人们以错误的方向提供答案时,很可能是因为他们不了解你的要求,而不是因为他们不知道如何回答。你不应该在一个新问题中再次发布同一个问题的细微变化。