鼠标悬停时的按键和多个函数中的变量

Keydown while mouseover and variables in multiple functions

当按住 "A" 键移动光标时,我想设置一个变量标志。

$(document).on("mousemove", function () {
    $(document).keydown(function(e) {
        if(e.which == 65){
            var $mLeft = '3px',
                $mTop = event.pageY - $sidebarRightDisp;
        } else {
            var $mLeft = event.pageX - $sidebarLeftDisp,
            $mTop = event.pageY - $sidebarRightDisp;
        }
    });
    var $boxStyleAct = 'left:' + $mLeft + 'px;top:' + $mTop + 'px' + ';';
    var $boxAct = '<li style="' + $boxStyleAct + '"></li>';

    $(".boxes").append($boxAct);
});

顺便说一句,我真的不能把我的“// do something with x”放在 keydown 函数中。

非常感谢。

您的 x 变量是在 if 语句的范围内定义的。你可以把它搬出去。您还在 mousemove 上添加了一个事件侦听器,这并不好。

您也可以这样做。

var aPressed = false;
var keyPressed = false;
var sidebarRightDisp = 5;
var sidebarLeftDisp = 5;

$(document).mousemove(function(event) {
  if (!keyPressed)
    return;

  var mLeft, mTop;
  if (aPressed) {
    mLeft = '3px';
    mTop = event.pageY - sidebarRightDisp;
  } else {
    mLeft = event.pageX - sidebarLeftDisp;
    mTop = event.pageY - sidebarRightDisp;
  }

  var boxStyleAct = 'left:' + mLeft + 'px;top:' + mTop + 'px' + ';';
  var boxAct = '<li style="' + boxStyleAct + '"></li>';

  $(".boxes").append(boxAct);

}).keydown(function(e) {
  keyPressed = true;
  aPressed = e.which == 65;

}).keyup(function(e) {
  keyPressed = false;
  aPressed = false;

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="boxes">
</div>

试试这个

var AkeyPressed = false;
var status = document.getElementById('status');

$(document).on('mousemove', function() {
  if(AkeyPressed == true) {
    console.log("mouse moving while pressing A key");
  }
  else {
    console.log("A key not pressed ");
  }
});
$(document).keydown(function(e) {
  if(e.which == 65) {
    AkeyPressed = true;
    //var x = true;
  }
  else {
    AkeyPressed = false;
    //var x = false;
  }
});
$(document).keyup(function(e) {
  AkeyPressed = false;
});
window.focus();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>