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也不起作用。不幸的是,我不知道为什么上面的代码不起作用,但不幸的是,这并不能解决我的问题,我本来希望这能解决问题,但事实并非如此,问题是在这个人按下空格键和右箭头键后,杰克开始跳到右边,现在他这样做了,但我继续按住右箭头,但杰克再也不动了,我必须松开箭头键,然后再按一次,我希望你明白这一点,很难解释,但你有解决办法吗?谢谢,这似乎有效,但不幸的是,这并不能解决我的问题,我希望这能解决问题,但事实并非如此,问题是在人按下空格键和右箭头键后,杰克开始向右跳,现在他这样做了,但我继续按住右箭头,但杰克没有进一步移动,我必须释放箭头键,然后再次按下,我希望你理解这一点,很难解释,但你有解决办法吗?