我正在创建一个" mousedown
"元素上的事件,如果按下shift键,则切换变量。我还希望在" mouseup
"事件发生。
element.addEventListener("mousedown", (e)=>{
if(e.shiftKey){
this.start = true;
} else {
this.start = false;
}
});
我希望在上面的代码之后随后出现this.start
时将mouseup
设为false。任何人都可以帮我解决它。
谢谢。
答案 0 :(得分:1)
看看https://api.jquery.com/mouseup/它谈论的是
.mouseup()
我相信你正在寻找的功能。它基本上是以下语法的简写:
.on('mouseup', handler)
可以像这样使用:
$( "#target" ).mouseup(function() {
alert( "Handler for .mouseup() called." );
});
文档中的完整示例如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>mouseup demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Press mouse and release here.</p>
<script>
$( "p" )
.mouseup(function() {
$( this ).append( "<span style='color:#f00;'>Mouse up.</span>" );
})
.mousedown(function() {
$( this ).append( "<span style='color:#00f;'>Mouse down.</span>" );
});
</script>
</body>
</html>
答案 1 :(得分:1)
首先听取Shift上的按键
var shiftIsPressedDown = false;
$(window).keydown(function(evt) {
if (evt.which == 16) { // shift
shiftIsPressedDown = true;
}
}).keyup(function(evt) {
if (evt.which == 16) { // shift
shiftIsPressedDown = false;
}
});
然后查看鼠标按下事件
$( "#target" ).mousedown(function() {
if(shiftIsPressedDown){
// Do logic here
}
});
答案 2 :(得分:-1)
我相信这个问题的工作代码改编自:jQuery keyboard event handler press and hold
var keysdown = {};
// keydown handler
$(document).keydown(function(e){
// Do we already know it's down?
if (keysdown[e.keyCode]) {
// Ignore it
return;
}
// Remember it's down
keysdown[e.keyCode] = true;
// Do our thing
if (e.keyCode == 16){
$(document).mousedown(function(){
//this.start = true;
console.log("this.start=true")
});
$(document).mouseup(function(){
//this.start = false;
console.log("this.start=false")
});
}
});
// keyup handler
$(document).keyup(function(e){
// Remove this key from the map
delete keysdown[e.keyCode];
});