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 一次,所以没有什么可以告诉函数更新 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,您可以运行 javascript 来切换 WITH cookie 设置 javascript。

于 2013-10-24T23:58:50.920 回答