我正在尝试使用按键进行图像移动。我已经找到问题所在,我只是无法修复它。问题与页面加载时的重点有关。我使用tabindex
修复了它。在我看来,这是一个糟糕的解决方案。
代码:
$(document).ready(function(){
$("#hero").focus();
("#hero").on('keydown', function(event){
switch(event.which){
case 37:
$('#hero').stop().animate({
left: '-=10'
}); //left arrow key
break;
case 38:
$('#hero').stop().animate({
top: '-=10'
}); //up arrow key
break;
case 39:
$('#hero').stop().animate({
left: '+=10'
}); //right arrow key
break;
case 40:
$('#hero').stop().animate({
top: '+=10'
}); //bottom arrow key
break;
}
});
});
有人会认为.focus()
是要走的路,但由于某种原因不起作用。
谢谢!
答案 0 :(得分:1)
答案 1 :(得分:1)
您无法在图片上使用focus
,您可以做的是创建隐藏的输入字段和焦点并读取该输入框内的击键。
演示: http://jsfiddle.net/PuPZF/2/ (基于Anton的代码)
答案 2 :(得分:0)
Is this what you are looking for
HTML:
<div id="pane">
<div id="box"></div>
</div>
CSS:
#pane {
position:relative;
width:300px; height:300px;
border:2px solid red;
}
#box {
position:absolute; top:140px; left:140px;
width:20px; height:20px;
background-color:black;
}
JavaScript的:
var pane = $('#pane'),
box = $('#box'),
w = pane.width() - box.width(),
d = {},
x = 3;
function newv(v,a,b) {
var n = parseInt(v, 10) - (d[a] ? x : 0) + (d[b] ? x : 0);
return n < 0 ? 0 : n > w ? w : n;
}
$(window).keydown(function(e) { d[e.which] = true; });
$(window).keyup(function(e) { d[e.which] = false; });
setInterval(function() {
box.css({
left: function(i,v) { return newv(v, 37, 39); },
top: function(i,v) { return newv(v, 38, 40); }
});
}, 20);