鼠标悬停时的按键和多个函数中的变量
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>
当按住 "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>