使用jQuery的箭头键事件不能在FF以外的任何其他工作!

时间:2011-02-22 16:36:18

标签: javascript jquery javascript-events

我创建了一个投资组合网站,在浏览图片时,我希望用户能够使用箭头键进行导航。我有以下代码在FF中运行良好,但不适用于Chrome,Safari或IE。

        $(document).keypress(function (evt) {
            if (evt.keyCode == 39) { 
              evt.preventDefault(); 
              $.scrollTo('+=564px', 800, { axis:'x' }); 
            } else if (evt.keyCode == 37) { 
              evt.preventDefault();
              $.scrollTo('-=564px', 800, { axis:'x' });
            }
  });

我安装了scrollTo插件并且工作以及有效的jQuery文件,所以这不是问题。可以告诉我为什么这可能在其他浏览器中不起作用吗?

实例here

帮助永远赞赏!

2 个答案:

答案 0 :(得分:6)

试试这个:

$(document).bind('keydown',function(evt) {

});

而不是

$(document).keypress(function(evt) {

});

这是因为IE以不同的方式处理KeyPress到FireFox。

编辑,因为你很高兴获得一个不错的答案:

我还会将您的陈述更改为switch

$(document).bind('keydown',function(evt) {
        switch(evt.keyCode) {
        case 65:
                    alert("you pressed key 65");
                    break;
                }
});

答案 1 :(得分:3)

如果你想制作这种跨浏览器,你也应该知道各个浏览器的keyCodes可能不一样。 jQuery提供属性event.which,它应该规范化浏览器之间的差异。

http://api.jquery.com/event.which

来自文档:

  

event.which规范化event.keyCodeevent.charCode。建议观看event.which键盘输入键。