1

我想让我的“esc”键根据当前情况做一些不同的事情。例如,我有一个显示工具栏的按钮,我想要“esc”键隐藏它,但我也想要“esc” '-key 打开一个用于关闭当前页面的框,如果再次按下 '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”键无关,因为它至少在键入键时会返回一些东西。

4

2 回答 2

3

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);
    }
}
于 2012-10-30T15:48:12.693 回答
1

它看起来像一个范围问题。该变量CloserIsShown是在esc_key_command函数内部创建的,因此在您运行比较时它还不存在。尝试在函数外部设置变量并在函数var内部重新分配值时删除命令。

于 2012-10-30T15:51:30.603 回答