jQuery变量不会在函数外部发生变化

时间:2013-04-20 14:34:13

标签: jquery variables

我在按下.sidebar-toggle时使用以下代码显示侧边栏,并在按下#page时隐藏侧边栏。

显示侧边栏工作正常,但在按下#page时不会隐藏。单击.sidebar-toggle时,看起来变量未设置为1。

var state = 0;

if (state === 0) {
    $('.sidebar-toggle').click(function() {
        $('#page').animate({marginLeft: '230px'}, 400);
        state = 1;
    });
}

if (state === 1) {
    $('#sidebar').click(function() {
        $('#page').animate({marginLeft: '0'}, 400);
        state = 0;
    });
}

2 个答案:

答案 0 :(得分:1)

你忘了使用#page click.function ...而最好的办法就是将if放在click.function中......试试这种方式

var state = 0;

$('.sidebar-toggle').click(function() {
    if (state===0) {    
        $('#page').animate({marginLeft: '230px'}, 400);
        state = 1;
    }    
});

$('#page').click(function() {
    if (state===1){
        $('#page').animate({marginLeft: '0'}, 400);
        state = 0;
    }
});

答案 1 :(得分:0)

可能是因为这从未执行过

if (state === 1) {
    $('#sidebar').click(function() {
        $('#page').animate({marginLeft: '0'}, 400);
        state = 0;
    });
}

尝试这种方式 -

var state = 0;
    $('.sidebar-toggle').click(function() {
       if (state === 0) {
        $('#page').animate({marginLeft: '230px'}, 400);
        state = 1;
       }
    });

    $('#page').click(function() {
       if (state === 1) {
        $('#page').animate({marginLeft: '0'}, 400);
        state = 0;
       }
    });