-1

Cookieを使用してユーザー設定を記憶しているときに、bodyタグのクラスを切り替えようとしています。

jquery cookieプラグインを使用して、これは私が思いついたものです

$("a#switchit").click(function () {
    if($.cookie('viewState')) {
        $('body').addClass('light') 
        $.cookie('viewState', 'true', { expires: 9999 });
    } else {
        $('body').removeClass('light')
        $.cookie('viewState', null); 
    };
});

私はjqueryの専門家ではないので、構文とすべてが間違っている可能性がありますが、うまくいけば、私が達成しようとしていることを確認し、私を正しく設定できます。

私のhtml:

<a id="switchit">Switch it</a>
4

3 に答える 3

1

質問に対する私のコメントへの回答に基づいて、あなたの問題は、Cookieの存在を確認し、ページの読み込み時とボタンがクリックされたときにクラスを設定する必要があるということです。

これを拡張するには:Cookieはページの更新時に保持されます(適切な時間枠の有効期限を設定するまで)が、DOMに対して行う操作(つまり、本文にクラス名を追加する)は保持されません。

ユーザーが配色を選択できるように正しく設定されており、Cookieを適切に設定しています。前回の訪問で設定されている場合は、事前に確認した部分を省略しました。

したがって、jQueryready関数に次を追加します。

$(document).ready(function(){
    if($.cookie('viewState') == 'true'){
        $('body').addClass('light');
    }
});
于 2012-04-09T20:09:33.273 に答える
0

これでうまくいくと思います。

$("a#switchit").click(function () {
    var isNotSet = $.cookie('viewState') === null;
    $('body').toggleClass( 'light', isNotSet);
    if (isNotSet) {
      $.cookie('viewState', 'true', { expires: 9999 });
    } else {
      $.cookie('viewState', null); 
    }
});
于 2012-04-09T19:54:52.820 に答える
0

論理的な問題、2行目を見てください。

$("a#switchit").click(function () {
    if(!$.cookie('viewState')) {
        $('body').addClass('light') 
        $.cookie('viewState', 'true', { expires: 9999 });
    } else {
        $('body').removeClass('light')
        $.cookie('viewState', null); 
    };
});

見てください。viewStateがTRUEのときにviewState=trueを設定していますか。viewStateがNULLの場合は、viewState=trueを設定する必要があります。

于 2012-04-09T19:58:23.530 に答える