嗨我正在尝试启动键启用,然后一旦单击按钮以禁用事件,这到目前为止工作正常,然后一旦按下关闭按钮我想再次启用事件这部分没有&#39工作我想用javascript解决这个问题如果可能我的关闭按钮在另一个html(project1.html)文件中并通过Ajax加载这里是我的代码:
var enable_keydown = document.onkeydown;
$(".open-project").click(function(){
document.onkeydown = null;
});
$("#project_close").click(function(){
document.onkeydown = enable_keydown;
});
document.onkeydown = function(e) {
switch (e.keyCode) {
case 37:
$.fn.fullpage.moveSectionUp();
break;
case 38:
$.fn.fullpage.moveSectionUp();
break;
case 39:
$.fn.fullpage.moveSectionDown();
break;
case 40:
$.fn.fullpage.moveSectionDown();
break;
}
};
亲切的问候
答案 0 :(得分:1)
为此,我会将您的禁用处理程序更改为:
addItemToBuyCart()
对于重新启用处理程序,请执行以下操作:
$(".open-project").click(function(){
$(document).on('keydown', function(e) { e.preventDefault(); });
});
on()函数绑定keydown事件以基本上停止事件发生,off()函数恢复默认的keydown功能。您可以在这里参考这些函数的jQuery文档:
答案 1 :(得分:1)
要删除事件侦听器,您的函数不能是匿名的,以便稍后可以引用它。所以定义你的功能:
function moveSection(e) {
switch (e.keyCode) {
case 37:
case 38:
$.fn.fullpage.moveSectionUp();
break;
case 39:
case 40:
$.fn.fullpage.moveSectionDown();
break;
default:
break;
}
}
将其添加到事件侦听器:
$(".open-project").click(function(){
document.addEventListener('keydown', moveSection);
});
删除它:
$("#project_close").click(function(){
document.removeEventListener('keydown', moveSection);
});
请参阅https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener和https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener
你在这做什么
var enable_keydown = document.onkeydown;
$("#project_close").click(function(){
document.onkeydown = enable_keydown;
});
归结为document.onkeydown = document.onkeydown
这是没有意义的。
答案 2 :(得分:1)
单击关闭div并指定keydown函数单击打开将从document.onkeydown
删除keydown函数。
function moveFunc(e) {
alert(e.keyCode);
};
$(".open-project").click(function(){
document.onkeydown = null;
});
$("#project_close").click(function(){
document.onkeydown = moveFunc;
});

.open-project{
background-color: red;
width: 150px;
height: 150px;
}
#project_close{
background-color: green;
width: 150px;
height: 150px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="open-project" >open project</div>
<div id="project_close" >project close</div>
&#13;
答案 3 :(得分:0)