带有if/else语句的转义键-jQuery

带有if/else语句的转义键-jQuery,jquery,function,if-statement,key,Jquery,Function,If Statement,Key,我想让我的“esc”键根据当前情况做一些不同的事情。。例如,我有一个显示工具栏的按钮,我想用“esc”键隐藏它,但我也想用“esc”键打开一个框来关闭当前页面,如果按“esc”键,它应该会隐藏关闭框 我以为会是这样,但它只会打开关闭框。当我再次键入“esc”时,它不会关闭它,当显示工具箱时,它也不会隐藏工具箱。它只是打开了顶部的关闭框 function esc_key_command() { if (toolboxIsShown) { $('.tool_box').hid

我想让我的“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);
    }
}
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);
    }
}

这看起来像是一个范围问题。变量CloserisShowed是在esc_key_命令函数中创建的,因此在运行比较时它还没有出现。尝试在函数外部设置变量,并在重新分配函数内部的值时删除var命令。

这看起来像是范围问题。变量CloserisShowed是在esc_key_命令函数中创建的,因此在运行比较时它还没有出现。尝试在函数外部设置变量,并在重新分配函数内部的值时删除var命令。

var closerisshow=false;var toolboxIsShown=假;函数esc_key_命令{if toolboxIsShown{$'.tool_box.hide;toolboxIsShown=false;}else if CloserIsShown{$'.closer.stop.fadeOut200;CloserIsShown=false;}else{$'.closer.stop.fadeIn200;CloserIsShown=true;}}var closerisshow=false;var toolboxIsShown=假;函数esc_key_命令{if toolboxIsShown{$'.tool_box.hide;toolboxIsShown=false;}else if CloserIsShown{$'.closer.stop.fadeOut200;CloserIsShown=false;}else{$'.closer.stop.fadeIn200;CloserIsShown=true;}}太好了这是正确的事情。。可以我不明白为什么var元素会有问题?你知道jQuery的逻辑解释吗?这可能会阻止我下次再问类似的问题:因为它们是局部变量。局部变量仅在该函数调用的生命周期内保持其值。因此,当该函数完成时,这些变量将被删除。没有提及它们。使用闭包会使这个答案稍微好一点。完美:这是正确的事情。。可以我不明白为什么var元素会有问题?你知道jQuery的逻辑解释吗?这可能会阻止我下次再问类似的问题:因为它们是局部变量。局部变量仅在该函数调用的生命周期内保持其值。因此,当该函数完成时,这些变量将被删除。没有提到它们。使用闭包会使这个答案稍微好一点。