javascript - 通过检查cookie动态改变jQuery "hover"

标签 javascript jquery css jquery-ui cookies

如何通过检查用户 cookie 来更改 jQuery .hover() 中的函数?

现在代码在网站首次加载时有效,但当 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 值。

最佳答案

好吧,您只检查 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 .不过,我不会推荐它,因为对于您要尝试做的事情来说,这似乎有点矫枉过正,但这是一个选择。

关于javascript - 通过检查cookie动态改变jQuery "hover",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576856/

相关文章:

javascript - React Js 数组字符串中的新行通过 Prop 传递

javascript - 悬停时动画表格背景 - Jquery

internet-explorer-8 - IE8 最小宽度和绝对定位问题

javascript - 将 HTML 表导出到 XLS 时不显示特殊字符

jquery - 如何在jsFiddle中使用ajax请求

html - 如果图像大于 div,则强制占用 div

php - 转换 BBCode 文本时检查图像大小

javascript - jQuery 动画数字计数器从零到值 - 当值达到数十万时计数器显示错误值

javascript - 响应式导航栏仅适用于我的主页

javascript - 对象数组操作