2012-04-09 82 views
-1

我想切換我的身體標記上的一個類,同時使用cookie來記住用戶設置。jQuery cookie切換

使用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> 
+0

在我看來非常正確的。發生了什麼,不應該是? – idrumgood 2012-04-09 19:52:24

+0

這是什麼問題?什麼不工作?你是否在包含'.cookie()'功能的插件還有其他地方? – Sparky 2012-04-09 19:56:31

+0

@idrumgood基本上類的切換'光'工程的身體標記,但當我刷新頁面的類被刪除... – Blackbird 2012-04-09 20:07:24

回答

1

根據我對這個問題的評論的回答,你的問題是你需要檢查cookie的存在,並在頁面加載時以及點擊按鈕時設置類。

要展開此操作:Cookie將在頁面刷新時保持不變(即使您已爲適當的時間範圍設置過期時間),而您對DOM做出的任何操作(即向主體添加類名稱)將不堅持。

您已將它設置正確,供您的用戶選擇其配色方案,並且您正在設置您的cookie。如果他們在上次訪問時設置了該功能,您只需提前檢查該部分即可。

所以,在你的jQuery就緒功能,添加:

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

這是它的伴侶。我真是一個白癡:)非常感謝! – Blackbird 2012-04-09 20:12:50

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

你看,你設置的ViewState = TRUE時ViewState是TRUE。當viewState爲NULL時,您需要設置viewState = true。