我想让我的esc-key根据当前的情况做一些不同的事情。例如,我有一个显示工具栏的按钮,我想用“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‘键没有任何关系,因为当键入键时,它至少会返回一些东西。
发布于 2012-10-30 23:48:13
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-30 23:51:31
这看起来像是范围问题。变量CloserIsShown是在esc_key_command函数中创建的,因此在运行比较时它还不存在。尝试在函数外部设置变量,并在函数内部重新赋值时删除var命令。
https://stackoverflow.com/questions/13142697
复制相似问题