0

我是新来的,想看看能不能得到答案。

为什么变量适用于第一个 if 语句,而不适用于 click 函数?

var Page = $.cookie('Page')

$(function () {

    if (Page == '0') $('.mainmenu #active').addClass('disable');

    $('.pageback').click(function () {
        if (Page == '1') $('.mainmenu #active').addClass('disable');
    }); // disable menu navigation  

    $('.pagenext').click(function () {
        if (Page == '0') $('.mainmenu #active').removeClass('disable');
    }); // disable menu navigation
});
4

1 回答 1

0

Page变量从 cookie 分配一次。

var Page = $.cookie('Page')

但是,它永远不会更改,因此在更改 cookie刷新页面之前,该值将保持不变。也就是说,对Page变量的赋值仅在评估时发生。这相当于说var Page = 'x'x 是给定时间点 cookie 的值。


虽然在更新 cookie时这仍然不会更新类(需要设置 cookie,然后需要发生点击),但请考虑使用可用于延迟评估的函数而不是变量。另请注意其他更改。

$(function () {

    function pageNo () {
       return parseInt($.cookie('Page'), 10) || 0;
    }

    var menu = $('.mainmenu #active');

    if (pageNo() == 0) menu.addClass('disable');

    $('.pageback').click(function () {
        if (pageNo() == 1) menu.addClass('disable');
    }); // disable menu navigation  

    $('.pagenext').click(function () {
        if (pageNo() == 0) menu.removeClass('disable');
    }); // disable menu navigation
});

为了确保在cookie 更改更改类,jQuery 事件可能很有用(cookie 插件是否默认支持任何?)来触发更新。我使用 KnockoutJS 并发现它使这种依赖管理变得容易。

于 2013-04-28T22:21:08.590 回答