2

我对此还是很陌生,所以请多多包涵。我有一个在点击事件上添加类的函数,这很好用。但我也希望将单击的功能保存为 cookie,以便当该用户下次访问该站点时,这些类仍然存在/重新应用。我为此使用 jquery.cookie。我的代码如下。

$(".bblue").click(function bblue() {
    $("dl").addClass("bbluebg");
    $("dd .button").addClass("buttonb");
    $('.button img').attr('src',function(i,e){return e.replace("White","DBlue");});
    $.cookie("color", function bblue(){} , { expires: null, path: '/' });
});

当我调用时$.cookie('color');返回function bblue(){},但在页面下次加载时它不会运行该函数。

4

2 回答 2

5

我假设您想要存储偏好并基于此采取行动。尝试这样的事情:

// Event-independent color change function
var bblue = function() {
    $("dl").addClass("bbluebg");
    $("dd .button").addClass("buttonb");
    $('.button img').attr('src', $('.button img').replace("White","DBlue"));
}

// Click action
$(".bblue").click(function () {
    // Change the color
    bblue();
    // Store the preference
    $.cookie("color", "blue" , { expires: null, path: '/' });
});

// On page load
$(document).load(function() {
    // If they chose blue before, change the color
    if ($.cookie("color") == "blue") bblue();
});    
于 2012-11-20T12:48:43.563 回答
1

该函数没有再次运行,因为页面重新加载时用户没有单击任何内容。您的函数仅在有人单击该.bblue元素时运行。

您需要获取 cookie 的值并在文档准备好的地方设置适当的类。课程不会坚持,您必须重新申请。你想用...

$(function() {
    var color = $.cookie("color");

    // Set classes according to color here
});

加载页面后,它将执行并设置所有类。

于 2012-11-20T12:44:33.887 回答