j查询多按键处理
jQuery multi-keypress handling
我已经用我使用的所有代码做了一个jsfiddle。
你可以看到我想用键盘箭头键移动的div。如您所见,我可以使用键盘向上/向下/向左/向右移动对象。我的问题是我希望对象对角线移动,这意味着使用上下键组合在一起。
我已经浏览了SO,但我没有找到任何示例来解释箭头键处理的确切情况。任何人都可以澄清一下。
提前感谢!
这是我下面的JS代码:
$(document).ready(function(){
var obj = $("#movetest")
$(window).on({
keydown: function(e){
if ( e.keyCode == 37 ){ move( obj, "left" ); }
if ( e.keyCode == 38 ){ move( obj, "up" ); }
if ( e.keyCode == 39 ){ move( obj, "right" ); }
if ( e.keyCode == 40 ){ move( obj, "down" ); }
}
})
});
function move(obj, dir){
var curHPos = parseInt(obj.css("margin-left"),10),
curVPos = parseInt(obj.css("margin-top"),10),
newHPos = curHPos,
newVPos = curVPos,
diff = 10;
if ( dir == "left" ) { newHPos = curHPos - diff; } else
if ( dir == "right" ) { newHPos = curHPos + diff; } else
if ( dir == "up" ) { newVPos = curVPos - diff; } else
if ( dir == "down" ) { newVPos = curVPos + diff; }
obj.css({
marginLeft: newHPos,
marginTop: newVPos
});
}
你需要看看这个:jQuery .keypress() 可以同时检测多个键吗?
在恢复中,需要使用键下和键控事件。
我在这里结束了它:http://jsfiddle.net/GtG2p/2/
我基本上是这样做的:
var keys = {};
var obj = $("#movetest");
$(document).ready(function(){
$(document).on({
keydown: function(e){
keys[e.which] = true;
throwKeys();
},
keyup: function(e){
delete keys[e.which];
throwKeys();
}
});
});
function throwKeys(){
for (var i in keys) {
if (!keys.hasOwnProperty(i)) continue;
if ( i == 37 ){ move( obj, "left" ); }
if ( i == 38 ){ move( obj, "up" ); }
if ( i == 39 ){ move( obj, "right" ); }
if ( i == 40 ){ move( obj, "down" ); }
}
}
相关文章:
- 如何处理node.js节点mongodb中的连接和查询队列
- 使用Node/Express随机查询Postgresql表并处理行数据
- 使用jquery从URL中删除查询字符串(处理问题)
- 自然语言处理数据库查询
- Angular2/RXJS-处理潜在的长查询
- Jquery为多个元素和事件查询一个事件处理程序
- Chrome 不处理 jquery ajax 查询
- j查询动态事件处理程序错误
- 搜索引擎 - 如何处理空查询
- 在 Meteor 中,如何将查找查询的处理结果发布为游标
- j查询多按键处理
- 处理猫鼬查询,但使用不同的 JavaScript Promise 实现
- 在猫鼬查询返回集合之前,应用程序应该如何处理 http get 响应
- 在何处处理续集ORM查询语句中的错误
- j查询单击事件未触发自定义事件处理程序
- 来自 Javascript 的查询字符串参数不会用于处理 PHP 脚本
- Node JS - 处理多个查询(promise,bluebird)
- 有没有一种干净的方法来混合异步和同步数据库查询处理
- Javascript:处理查询字符串
- 在处理查询时显示繁忙的游标