0

クリック時に mouseenter と mouseleave を切り替える次の関数があります。

var flag = true;
$('.aaa').mouseenter(function () {
    if(flag) {
    $(this).css('background', '#aaaaaa');
    }
    $(this).css('border', 'solid 1px red');
});
$('.aaa').mouseleave(function () {
    if(flag) {
    $(this).css('background','blue');
    }
    $(this).css('border', 'solid transparent 1px');
});
$('#tog').click(function () {
    flag = !flag;
});

http://jsfiddle.net/z8KuE/15/

選択した設定をどのように「記憶」し、次のページ読み込み時に読み込むことができますか?

編集: 以下の解決策が何らかの理由でサイトで機能しない場合は、ここに配置してください:

 (function($){
    $(document).ready(function(){
       //Scripts go in here!
    });
 })(jQuery);
4

1 に答える 1

2

jQuery cookie プラグインを使用します。

var storedFlag = $.cookie('userSelection'); // read cookie
var flag = 1;  //default value
if(storedFlag != undefined){   // some flag was stored
    flag = storedFlag;
}
$('.aaa').mouseenter(function () {
    if(flag > 0) {
        $(this).css('background', '#aaaaaa');
    }
    $(this).css('border', 'solid 1px red');
});
$('.aaa').mouseleave(function () {
    if(flag > 0) {
        $(this).css('background','blue');
    }
    $(this).css('border', 'solid transparent 1px');
});
$('#tog').click(function () {
    flag = 1 - flag;
    $.cookie('userSelection', flag, { expires: 30 }); // store cookie
});

>0問題は、ブール値が文字列として保存され、文字列「false」が真の値であるため、数値と比較 を使用することに頼ったことです。

更新されたフィドルを参照してください

于 2013-09-29T15:29:32.927 に答える