jquery.cookie.jsでカンタンにcookie(クッキー)を操作して次回から表示しないやつを作ってみる。
もくじ
jquery関連記事
【jQuery】pdfが存在するか、mimeタイプのバリデーションする
jQuery UIのsortableを使ってリストをドラッグで並び替える
jQueryのモーダルウィンドウを使ってフォームの確認画面を実装する
HTMLのcanvasタグとJavaScriptで円グラフの画像をつくる
bxSliderをカルーセルやコンテンツスライダーなど便利なサンプル5種
bxSliderの使い方と、オプションでのカスタマイズ方法
select・optionタグをjQueryで、プルダウンの選択値を取得、変更する
jQueryでinput[type="file"]で画像アップロード時にプレビューを表示する
jQueryでrequiredの専用エラー文と文字数制限のバリデーションをつくる
デモを用意しました。
jQuery本体とjquery.cookie.jsを準備します。
ダウンロードはGitHubから。
ダウンロードしたらhtmlに読み込みます。
html
<script src="./jquery.js" type="text/javascript"></script> <script src="./jquery.cookie.js" type="text/javascript"></script>
JavaScript
$.cookie("cookie1", "red", {expires: 7, path: "/", domain: "sample.com", secure: true});
上のコードで、cookie1
というcookieにred
という値を入れています。
基本的にはこれだけでcookieを扱えます。
波括弧の中に有効期限などのオプションも指定できます。
expires
は有効期限で、この指定では7日間になります。
省略するとブラウザを閉じたときにcookieを削除します。path
は保存するパス名を指定します。この指定ではサイト全体で利用することができます。domain
で有効となるドメインを指定します。secure
SSL接続の場合のみに送信します。
html
<button type="button" id="keep1">cookie1の保存</button>
JavaScript
$('#keep1').click(function(){ $.cookie("cookie1", "test"); });
デモのcookieの保存の部分です。ボタンクリックでcookie1
にtest
の値をセットしています。
html
<button type="button" id="delete1">cookie1の削除</button>
JavaScript
$('#delete1').click(function(){ $.removeCookie("cookie1"); });
$.removeCookie("cookie1");
でcookie名を指定すれば削除できます。
html
<button type="button" id="keep2">値:red</button> <button type="button" id="keep3">値:blue</button>
JavaScript
function check(){ if ($.cookie("cookie1") == "red") { $('.fix_status').css("background-color","#f9c1c1"); }else if ($.cookie("cookie1") == "blue") { $('.fix_status').css("background-color","#bbe7ff"); }else{ $('.fix_status').css("background-color","#fff"); } }; $('#keep2').click(function(){ $.cookie("cookie1", "red"); check(); }); $('#keep3').click(function(){ $.cookie("cookie1", "blue"); check(); });
cookieの取得は$.cookie("cookie1")
でできるので取得したcookieの値で分岐させ、背景色を変更しています。
また、cookieの値の変更は、cookieの保存と同じ$.cookie("cookie1", "blue");
で値の変更ができます。
押すボタンによって値を分けています。
次回から表示しないボタン
html
<input type="checkbox" id="public" value=""> <label for="public">次回から表示しない</label> <div id="oc_box"> <p>コンテンツ</p> </div>
JavaScript
if ($.cookie("cookie2") == "close") { $("#public").prop('checked', true); }else{ $("#oc_box").show(); } function checkcookie(){ if ($("#public").prop('checked') == true) { $.cookie("cookie2", "close"); }else{ $.removeCookie("cookie2"); } }; function toggleslide(){ if ($.cookie("cookie2")) { $("#oc_box").slideUp(); }else{ $("#oc_box").slideDown(); } }; $('#public').click(function(){ checkcookie(); toggleslide(); });
だらだら書きましたが一番最初のif ($.cookie("cookie2") == "close")
でリロードなどでページに来た時にcookieがあるかの状態を確認しcheckboxにチェックを入れたり、コンテンツの表示/非表示の処理をしています。
functionの処理は、function toggleslide()
cookieの値でコンテンツの表示/非表示を、function checkcookie()
でcheckboxの選択状態でcookieの状態を変更しています。
最後の$('#public').click(function()
でcheckboxがクリックされたら2つのfunctionを実行しています。
cookieが保存してある場合は、リロードしても、別ページに移動してもcookieの値は保持されます。
コメント