我想根据当前情况使'esc'键做一些不同的事情。例如,我有一个显示工具栏的按钮,我想用'esc'键隐藏它,但我也想用'esc'键“-”键打开一个用于关闭当前页面的框,如果再次按“ esc”-键,则该框将隐藏关闭框。

我以为会是这样,但是只能打开关闭框。当我再次输入“ esc”时,它不会关闭,显示时也不会隐藏工具箱。它只是打开顶部的关闭框。

function esc_key_command() {
    if (toolboxIsShown) {
        $('.tool_box').hide();
        var toolboxIsShown = false;
    } else if (CloserIsShown) {
        $('.closer').stop().fadeOut(200);
        var CloserIsShown = false;
    } else {
        $('.closer').stop().fadeIn(200);
        var CloserIsShown = true;
    }
}


我知道它与调用“ esc”键无关,因为至少在键入键时它会返回某些内容。

最佳答案

var声明是问题所在。变量的范围是局部的,因此每次调用该函数时,它们都会被重置。

如果要使用变量,则需要在功能范围之外进行设置。

为什么可以使用变量查看状态

function esc_key_command() {
    var tools = $('.tool_box');
    var closer = $('.closer');
    if (tools.is(":visible")) {
        $('.tool_box').hide();
    } else if (closer.is(":visible")) {
        $('.closer').stop().fadeOut(200);
    } else {
        $('.closer').stop().fadeIn(200);
    }
}

10-04 11:10