启用和禁用 onkeydown 事件?
Enable and disable onkeydown event?
您好,我正在尝试从启用键开始,然后单击按钮以禁用事件,到目前为止一切正常,然后一旦按下关闭按钮,我想再次启用事件这部分没有不行 如果可能我想使用 javascript 解决这个问题 我的关闭按钮在另一个 html (project1.html) 文件中并通过 [=19= 加载] 这是我的代码:
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;
}
};
亲切的问候
您可以使用标志变量或使用绑定和解除绑定函数。
同时检查这个问题:
bind and unbind event in jquery
为此,我会将您的禁用处理程序更改为:
$(".open-project").click(function(){
$(document).on('keydown', function(e) { e.preventDefault(); });
});
对于重新启用处理程序,请执行以下操作:
$("#project_close").click(function(){
$(document).off('keydown');
});
on()函数绑定了keydown事件,基本上阻止了事件的发生,off()函数恢复了默认的keydown功能。您可以在此处参考这些功能的 jQuery 文档:
要删除事件侦听器,您的函数不能是匿名的,以便您以后可以引用它。所以定义你的函数:
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 and 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
这没有意义。
单击关闭 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>
您好,我正在尝试从启用键开始,然后单击按钮以禁用事件,到目前为止一切正常,然后一旦按下关闭按钮,我想再次启用事件这部分没有不行 如果可能我想使用 javascript 解决这个问题 我的关闭按钮在另一个 html (project1.html) 文件中并通过 [=19= 加载] 这是我的代码:
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;
}
};
亲切的问候
您可以使用标志变量或使用绑定和解除绑定函数。
同时检查这个问题:
bind and unbind event in jquery
为此,我会将您的禁用处理程序更改为:
$(".open-project").click(function(){
$(document).on('keydown', function(e) { e.preventDefault(); });
});
对于重新启用处理程序,请执行以下操作:
$("#project_close").click(function(){
$(document).off('keydown');
});
on()函数绑定了keydown事件,基本上阻止了事件的发生,off()函数恢复了默认的keydown功能。您可以在此处参考这些功能的 jQuery 文档:
要删除事件侦听器,您的函数不能是匿名的,以便您以后可以引用它。所以定义你的函数:
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 and 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
这没有意义。
单击关闭 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>