我在尝试在页面上创建导航时遇到了很大的问题。如果鼠标输入一个元素然后选择它,那么如果你使用箭头键,它将选择相对于所选元素的元素。但是,当箭头键导致页面滚动时,这是一个问题,因为(取决于鼠标的位置)它将选择适当的元素,然后在页面移动后立即选择鼠标现在的项目(即使你没有不要移动鼠标。
有谁知道如何解决这个问题?我试着修补它但我的解决方案似乎都没有用。感谢任何帮助,谢谢。
答案 0 :(得分:1)
我不确定是否完全理解,但您应该能够结合使用mousemove
和keypress
事件:
$("#element").mousemove(function(e){
alert("mouse moved");
});
$("#element").keypress(function(e){
if (e.keyCode == 38 || e.keyCode == 40){ //up & down arrow keys
e.preventDefault();
}
});
答案 1 :(得分:1)
听起来你应该绑定mousemove
上的“当鼠标进入时选择”事件并解除mousestop
上的所述事件。 mousestop
本身并不存在,因此您必须以某种方式创建它或使用插件(至少有一些插件,如https://github.com/richardscarrott/jquery-mousestop-event/)。我认为这将是最简单的解决方案,但您的UI似乎有点奇怪(您希望箭头键正常滚动页面和“选择”一个可能大于滚动大小的元素?)< / p>
答案 2 :(得分:0)
尝试从检查箭头键的键盘事件处理程序返回false:
element.onkeypress = function(ev) {
// ...
return false;
}
这将阻止浏览器对该事件进行滚动的“默认行为”。这也适用于链接,例如:如果您从链接的click
事件处理程序返回false,则单击该链接将不会自动跟随它。