0

.hover()ユーザーのCookieをチェックしてjQuery内の関数を変更するにはどうすればよいですか?

現在、コードはサイトが最初に読み込まれたときに機能しますが、Cookie が (javascript を介して) 更新されると.hover()、ページがリロードされない限り切り替えられません。

    var SkinChk = getCookie('skincookie');

    $('.fadeMenu').hover(function(){
        if (SkinChk == 'Alternative') {
            // Alternative Skin
            $(this).stop().animate({ backgroundColor:'rgb(66, 137,170)', color:'#F7F9F4'},500);
        } else {
            // Default Skin
            $(this).stop().animate({ backgroundColor:'rgb(255,165,0)', color:'#FFFFFF'},500);
        }
    }, function(){
        if (SkinChk == 'Alternative') {
            // Alternative Skin
            $(this).stop().animate({ backgroundColor:'rgb(247, 249, 244)', color:'#1F262A'},500);
        } else {
            // Default Skin
            $(this).stop().animate({ backgroundColor:'rgb(201,224,179)', color:'#333333'},500);
        }
    });

var SkinChk = getCookie('skincookie');、簡潔にするために投稿しなかった動作中の JavaScript 関数を参照しています。Cookie 値を返します。

4

2 に答える 2

0

Cookie を 1 回だけチェックしているので、SkinChk 変数を更新するように関数に指示する必要はありません。

これを修正する最も簡単な方法は、Cookie チェックをホバー関数内に移動することです。

var SkinChk;    

$('.fadeMenu').hover(function(){
    //Check if the cookie has changed
    SkinChk = getCookie('skincookie');
    if (SkinChk == 'Alternative') {
        // Alternative Skin
        $(this).stop().animate({ backgroundColor:'rgb(66, 137,170)', color:'#F7F9F4'},500);
    } else {
        // Default Skin
        $(this).stop().animate({ backgroundColor:'rgb(255,165,0)', color:'#FFFFFF'},500);
    }
}, function(){
    //Check if cookie has changed
    SkinChk = getCookie('skincookie');
    if (SkinChk == 'Alternative') {
        // Alternative Skin
        $(this).stop().animate({ backgroundColor:'rgb(247, 249, 244)', color:'#1F262A'},500);
    } else {
        // Default Skin
        $(this).stop().animate({ backgroundColor:'rgb(201,224,179)', color:'#333333'},500);
    }
});

Cookie を監視するサービスをリッスンするイベントを作成することもできます。nsICookieServiceをチェックしてください。ただし、あなたがやろうとしていることに対して大規模なやり過ぎのように思えるので、お勧めしませんが、それはオプションです。

于 2013-10-24T21:39:24.323 に答える
0

ページをリロードしないと、更新された Cookie を取得できないと思います。Cookie の設定とは別に Cookie を確認しようとする代わりに、スイッチを Cookie 設定 JavaScript にする JavaScript を実行できます。

于 2013-10-24T23:58:50.920 に答える