2012-04-09 3 views
-1

クッキーを使用してユーザー設定を記憶している間に、私のbodyタグでクラスを切り替えることを試みています。これは私がjQueryクッキートグル

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

を作ってみたものですjqueryのクッキーのプラグインを使用して

構文とすべてが、おそらく間違っているので、私はjqueryのには専門家だが、うまくいけば、あなたは私は何を見ることができます達成して私を正しいものにしようとしています。

私のhtml:

<a id="switchit">Switch it</a> 
+0

ザ・は私にはかなり右に見えます。すべきではないことが起こっていますか? – idrumgood

+0

何が質問ですか?何がうまくいかないの? '.cookie()'関数を他のどこかのプラグインに含めていますか? – Sparky

+0

@idrumgood基本的にクラストグル 'light'はbodyタグで動作しますが、ページをリフレッシュするとクラスが削除されます... – Blackbird

答えて

1

質問に対する私のコメントへの回答に基づいて、クッキーの有無を確認し、ページの読み込み時にクラスを設定し、ボタンをクリックする必要があります。

これに展開する:ページの更新時にクッキーが永続化されます(適切な時間枠の有効期限が設定されるまで保留中)一方、DOMに行う操作(つまり本体にクラス名を追加する操作)は存続しない。

ユーザーが自分の配色を選択するように正しく設定してあり、クッキーをうまく設定しています。前回の訪問時に設定していた場合は、事前に確認する部分を除外しました。

だから、あなたのjQueryのレディ機能で、追加:

$(document).ready(function(){ 
    if($.cookie('viewState') == 'true'){ 
     $('body').addClass('light'); 
    } 
}); 
+0

それはそれが仲間だった。私は馬鹿なんです:)ありがとう! – Blackbird

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); 
    } 
}); 
0

論理的問題、2行目を見て:

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

ちょうど見て、ビューステートがTRUEのときにビューステート= trueを設定しています。 viewStateがNULLの場合、viewState = trueを設定する必要があります。

関連する問題