变量适用于if语句,但不适用于单击函数

时间:2013-04-28 22:13:44

标签: jquery

我是新来的,正在寻找能否得到答案。

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

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
});

1 个答案:

答案 0 :(得分:0)

从Cookie中分配Page变量一次。

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并发现它使这种依赖管理变得容易。