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 に答える