jQuery变量不';不要在功能之外改变

jQuery变量不';不要在功能之外改变,jquery,variables,Jquery,Variables,我使用以下代码在按下.sidebar toggle时显示侧栏,在按下#page时隐藏侧栏 显示侧边栏效果很好,但按下页面时不会隐藏。单击.sidebar切换时,变量似乎未设置为1 var state = 0; if (state === 0) { $('.sidebar-toggle').click(function() { $('#page').animate({marginLeft: '230px'}, 400); state = 1; })

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

显示侧边栏效果很好,但按下页面时不会隐藏。单击.sidebar切换时,变量似乎未设置为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;
    });
}

你忘了使用#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;
    }
});

可能是因为这从未执行过

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

它会触发。侧边栏切换点击,而不是页面点击——对吗?你能包括你的相关HTML吗?代码只运行一次。所以状态===1将永远不会被执行。。。