我目前正在尝试为我设计第一个网站。 我有一个菜单,默认情况下是隐藏的。当您按下导航栏中的按钮时,它打开正常。
但是我想通过键添加这样做的可能性。 M =打开菜单; ESC =关闭菜单;
$(document).keydown(function(e) {
if (e.keyCode == 77) {$('#Menu').collapse('show') ;} ;
if (e.keyCode == 27) {$('#Menu').collapse('hide') ;} ;
}) ;
虽然这样可以正常工作,但问题是,如果连续两次或多次按M键,而不在其间按ESC键,菜单将不再打开。与ESC键相同。
此外,当菜单已经打开,然后你按M重新打开,这很难看。
所以我尝试在名为MenuToggled的var中保存Menu的状态 为什么这不起作用?
$(document).ready(function() {
//different stuff...
var MenuToggled = 0 ;
} ;
$(document).keydown(function(e) {
if (e.keyCode == 77) {
if (MenuToggled == 0) {$('#Menu').collapse('show') ; var MenuToggled = 1 ;}
} ;
if (e.keyCode == 27) {
if (MenuToggled == 1) {$('#Menu').collapse('hide') ; var MenuToggled = 0 ;}
} ;
});
看来,Jquery甚至没有输入密码 - 如果是,因为我试图触发.alert('test');事件并没有在“第二”代码中起作用。
答案 0 :(得分:1)
var menuToggled = false;
$(document).keydown(function(e){
var action = false;
switch(e.which){
case 77:
if(!menuToggled) action = 'show';
break;
case 27:
if(menuToggled) action = 'hide';
break;
};
if(action !== false){
$('#Menu').collapse(action);
menuToggled = !menuToggled;
e.preventDefault();
}
});
答案 1 :(得分:0)
使用此声明.. e.preventDefault()
if (e.keyCode == 77) {
e.preventDefault();
if (MenuToggled == 0) {$('#Menu').collapse('show') ; var MenuToggled = 1 ;}
} ;
if (e.keyCode == 27) {
e.preventDefault();
if (MenuToggled == 1) {$('#Menu').collapse('hide') ; var MenuToggled = 0 ;}
} ;