我有一个 Plunkr,其中包含一个
这意味着
(要查看问题,请将焦点保持在窗口上,按住右箭头,div 应该移动5px,然后等待,再继续移动) 问题:有没有解决方法,我可以按住键不放,
div
,我在其上绑定了 keydown
事件。按下左右箭头后,div
应开始移动。在所有浏览器中都可以正常工作,但当按键被按住时,第一个 keydown
事件会立即被触发(div 会移动一次),然后等待一段时间后才继续移动。这意味着
keydown
事件仅被触发一次,然后浏览器等待检测是否有后续的 keyUp
事件,然后在短时间内(没有 keyup 时)继续触发 keydown
事件。(要查看问题,请将焦点保持在窗口上,按住右箭头,div 应该移动5px,然后等待,再继续移动) 问题:有没有解决方法,我可以按住键不放,
div
就可以立即开始移动,而无需等待检测后续的 keyup (只有一次)?
$(function() {
$(window).keydown(function(e) {
console.log(e.keyCode)
if (e.keyCode == 39)
move(5, 'left', $('.mover'))
else if (e.keyCode == 37)
move(-5, 'left', $('.mover'))
})
})
function move(offset, direction, target) {
console.log($(target))
$(target).css(direction, (parseInt($(target).css(direction)) + offset) + 'px')
}
.mover {
height: 50px;
width: 50px;
display: inline-block;
background: black;
position: absolute;
left: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class='mover'></div>