我们都知道因为js是单线程的,所以没有可以同时触发键盘两个事件的方法

今天我们就来做一个可以实现这个功能方法

先来看一下成品图效果

接下来我们来看下具体是怎么实现的

注释写在了代码里面

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.demo{
width: 30px;
height:10px;
}
.demo1{
position: absolute;
left:500px;
top:500px;
background:red;
}
.demo2{
background:green;
position: absolute;
left:600px;
top:500px;
}
</style>
</head>
<body>
<div>
<div class="demo demo1"></div>
<div class="demo demo2"></div>
</div>
<script src="../jq/jquery-3.3.1/jquery-3.3.1.js"></script>
<script>
var a_left = false; //先声明4个变量等于false
var a_right = false;
var b_left = false;
var b_right = false;
$('body').keydown(function(e){ //绑定按下事件 ,按下按键时变量等于true
switch(e.keyCode){
case 37:
a_left = true;
console.log('左按下');
break;
case 39:
a_right = true;
console.log('右按下');
break;
case 65:
b_left = true;
console.log('A按下');
break;
case 68:
b_right = true;
console.log('D按下');
break;
}
});
$('body').keyup(function(e){ //绑定抬起事件,按键抬起时变量等于false
switch(e.keyCode){
case 37:
a_left = false;
console.log('左抬起');
break;
case 39:
a_right = false;
console.log('右抬起');
break;
case 65:
b_left = false;
console.log('A抬起');
break;
case 68:
b_right = false;
console.log('D抬起');
break;
}
}); //然后开启一个定时器,不停的判断4个全局变量现在的状态。
//比如A按键按下,变量即等于true,这时再按键左按键变量也是等于true的,所以并不会起到冲突
//可实现同时触发两个按键事件
setInterval(function(){
if(a_left){
$('.demo1').css('left','-=5');
}
if(a_right){
$('.demo1').css('left','+=5');
}
if(b_left){
$('.demo2').css('left','-=5');
}
if(b_right){
$('.demo2').css('left','+=5');
}
},5)
</script>
</body>
</html>

谢谢观看,如有不足请指教!  谢谢观看,如有不足请指教!谢谢观看,如有不足请指教!

jQuery同时监听两个事件---实现同时操控两个按键的更多相关文章

  1. jquery -- 同时监听多个事件

    多个事件触发同一反应 $("#redrow").on("click touchend",function(){});//每个监听事件之间用 “空格” 隔开 多个 ...

  2. js与jquery实时监听输入框值变化方法

    本文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法.分享给大家供大家参考.具体如下: 最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时 ...

  3. js与jquery实时监听输入框值的oninput与onpropertychange方法

    文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法.分享给大家供大家参考.具体如下: 最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时监 ...

  4. 移动端用js与jquery实时监听输入框值的改动

    背景: 在一次移动端H5开发中,需要监听输入框值的实时变动. onchange事件肯定抛弃,因为只能失去焦点才触发. 而keyPress在Android可以触发,iOS不可以. 又不想用Android ...

  5. IOS之UI--自定义按钮实现代理监听点击事件

    前言: Objective-C提供的按钮监听事件的方法是 不含参数的监听方法 [button实例对象 addTarget:self action:@selector(func) forControlE ...

  6. Android监听点击事件实现的三种方法

    监听点击事件实现的三种方法:1.匿名内部类2.外部类3.直接实现接口 1.匿名内部类: package com.jereh.calculator; import android.content.Con ...

  7. js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写

    js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写 一.总结 一句话总结:滚动事件scroll(),浏览器窗口调整监听resize(),思考好监听对象. 1.滚动事件scroll()的监听对象是 ...

  8. javascript 原生方法监听DOM结构改变事件

    js原生方法监听DOM结构改变事件 document.addEventListener('DOMNodeInserted',function(){alert(1)},false);document.a ...

  9. WPF之监听组合键事件

    private void KeyDown(object sender, KeyEventArgs e) { if (e.Key== Key.Up && Keyboard.Modifie ...

随机推荐

  1. 面向接口的webservice发布方式

    import javax.jws.WebService; /**面向接口的webservice发布方式 */ @WebService public interface JobService { pub ...

  2. 我为什么不喜欢 CoreData

    我为什么不喜欢 CoreData   我一直不喜欢 Core Data,以前不太敢明目张胆地这么表达,现在收集到越来越多相关的信息,所以给大家分享一下,我为什么不喜欢 Core Data. Core ...

  3. java 常量表达式

    原文地址:http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.28 这是我翻译的,以备不时之用. 常量表达式是一个代 ...

  4. CXF、Spring整合的SOAP Web Service服务端

    1.建工程,导入CXFjar包 2.服务接口 package com.cxf.soap; import java.util.List; import javax.jws.WebService; @We ...

  5. JavaScript重点记忆

    String的常用方法 indexOf() 返回字符串中检索指定字符第一次出现的位置 lastIndexOf() 返回字符串中检索指定字符最后一次出现的位置 match() 找到一个或多个正则表达式的 ...

  6. awk基本语法

    1 awk处理的对象 1.1 record awk处理时,默认会将文件按照换行符,分隔成record.默认分隔符是换行符. 1.2 filed 对于每个record,awk自动又分隔成filed.默认 ...

  7. Joomla中的Task 和view 深入学习

    [本文转自:梦溪笔记] Joomla 是一个优秀的CMS系统,她可以让你快速的完成一个网站的建设,她提供组件,模块,模板能够满足你大部分的网站需求.而组件在其中举足轻重. 一.基本知识 组件(comp ...

  8. hdu 1757 A Simple Math Problem (矩阵高速幂)

    和这一题构造的矩阵的方法同样. 须要注意的是.题目中a0~a9 与矩阵相乘的顺序. #include <iostream> #include <cstdio> #include ...

  9. redis03----link 链表操作

    link 链表结构 之前是操作字符串string 链表:头元素,后面一个一个的指向后面的元素.Redis内部实现了链表的结构.链表的头尾,从一个元素找到另外的元素. 链表的名字也是一个key. flu ...

  10. Delphi ActiveForm发布全攻略

    论坛上很多朋友(也包括我)提到ActiveForm的发布问题,都没有得到很好的解决.下面是本人开发ActiveForm的一点经验,拿出来跟大家分享,开发环境为 Win2000Server,IIS5.0 ...