Javascript JS触发器按键关闭事件
我有点困惑为什么这个代码不起作用:Javascript JS触发器按键关闭事件,javascript,jquery,Javascript,Jquery,我有点困惑为什么这个代码不起作用: $(document).keydown(function(e){ if (e.keyCode == 39) { //RIGHT document.getElementById('col_detector_right').innerHTML=""; col_jack('right'); if(document.getElementById('col_d
$(document).keydown(function(e){
if (e.keyCode == 39) {
//RIGHT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 400;
document.getElementById('jack').style.left = new_left+'px';
}
right = true;
return false;
}
if (e.keyCode == 37) {
//LEFT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left - 4;
document.getElementById('jack').style.left = new_left+'px';
}
right = false;
return false;
}
if (e.keyCode == 38) {
//UP
return false;
}
if (e.keyCode == 40) {
//DOWN
return false;
}
if (e.keyCode == 32) {
//SPACE
if(right==true){
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 20;
document.getElementById('jack').style.left = new_left+'px';
right=false;
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
}
else{
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
}
return false;
}
});
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
具体而言,此位不起作用:
$(document).keydown(function(e){
if (e.keyCode == 39) {
//RIGHT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 400;
document.getElementById('jack').style.left = new_left+'px';
}
right = true;
return false;
}
if (e.keyCode == 37) {
//LEFT
document.getElementById('col_detector_right').innerHTML="";
col_jack('right');
if(document.getElementById('col_detector_right').innerHTML!=""){
}
else{
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left - 4;
document.getElementById('jack').style.left = new_left+'px';
}
right = false;
return false;
}
if (e.keyCode == 38) {
//UP
return false;
}
if (e.keyCode == 40) {
//DOWN
return false;
}
if (e.keyCode == 32) {
//SPACE
if(right==true){
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
var left = document.getElementById('jack').style.left;
var current_left = parseFloat(left);
var new_left = current_left + 20;
document.getElementById('jack').style.left = new_left+'px';
right=false;
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
}
else{
var top = document.getElementById('jack').style.top;
var current_top = parseFloat(top);
var new_top = current_top -40;
document.getElementById('jack').style.top = new_top+'px';
}
return false;
}
});
var press = $.Event('keydown');
press.which = 39;
$(document).trigger(press);
为什么??这个想法是,它应该触发右箭头键,但它不是?什么都没有发生,不是没有触发,就是没有正确检查按键事件?我不知道是哪一个还是其他什么?您需要将属性对象传递给jQuery事件对象,如下所示:
// Create a new jQuery.Event object with specified event properties.
var e = jQuery.Event("keydown", { keyCode: 64 });
// trigger an artificial keydown event with keyCode 64
jQuery("body").trigger( e );
阅读$.Event的API文档-您需要将属性对象传递给jQuery事件对象,如下所示:
// Create a new jQuery.Event object with specified event properties.
var e = jQuery.Event("keydown", { keyCode: 64 });
// trigger an artificial keydown event with keyCode 64
jQuery("body").trigger( e );
阅读$.Event-的API文档,我从未在Javascript中调用过事件,但我建议您检查一下:您可以尝试设置press的键码,但一般来说,它可能不起作用,更不用说在所有浏览器中都起作用了。keypress也不起作用不幸的是,我不知道为什么上面的代码不起作用我从未在Javascript中调用过事件,但我建议你检查一下:你可以试着设置press的键码,但总的来说,它可能不起作用,更不用说在所有浏览器中都起作用了。keypress也不起作用。不幸的是,我不知道为什么上面的代码不起作用,但不幸的是,这并不能解决我的问题,我本来希望这能解决问题,但事实并非如此,问题是在这个人按下空格键和右箭头键后,杰克开始跳到右边,现在他这样做了,但我继续按住右箭头,但杰克再也不动了,我必须松开箭头键,然后再按一次,我希望你明白这一点,很难解释,但你有解决办法吗?谢谢,这似乎有效,但不幸的是,这并不能解决我的问题,我希望这能解决问题,但事实并非如此,问题是在人按下空格键和右箭头键后,杰克开始向右跳,现在他这样做了,但我继续按住右箭头,但杰克没有进一步移动,我必须释放箭头键,然后再次按下,我希望你理解这一点,很难解释,但你有解决办法吗?