2010-11-05 99 views
35

我想给我的内容滑块响应按键(左箭头键和右箭头键)功能的能力。我已阅读了几个浏览器和操作系统之间的一些冲突。jQuery按键左/右导航

用户可以在全球网站(正文)上浏览内容。

伪代码:

ON Global Document 

IF Key Press LEFT ARROW 

THEN animate #showroom css 'left' -980px 


IF Key Press RIGHT ARROW 

THEN animate #showroom css 'left' +980px 

我需要一个解决方案,无需任何交叉(浏览器,操作系统)的冲突。

回答

86
$("body").keydown(function(e) { 
    if(e.keyCode == 37) { // left 
    $("#showroom").animate({ 
     left: "-=980" 
    }); 
    } 
    else if(e.keyCode == 39) { // right 
    $("#showroom").animate({ 
     left: "+=980" 
    }); 
    } 
}); 
+7

现在我们不应该使用'which'而不是'keyCode'来使用jQuery吗? – Shikiryu 2010-11-05 08:51:09

+0

我不知道,但看http://api.jquery.com/keydown/ 演示在那里,使用e.keyCode。 – elektronikLexikon 2010-11-05 09:03:35

+0

是的,你应该使用.which()来获得键码。例外是,如果你想在任何规范化之前获得原始文本输入(我猜这意味着像检测英镑键而不是简单的英镑字符) – carpii 2014-12-27 23:12:14

15
$("body").keydown(function(e){ 
    // left arrow 
    if ((e.keyCode || e.which) == 37) 
    { 
     // do something 
    } 
    // right arrow 
    if ((e.keyCode || e.which) == 39) 
    { 
     // do something 
    } 
}); 
+0

如果我们使用“which”它足够了 – GOK 2012-07-27 12:26:46

6

这对我工作得很好:

$(document).keypress(function (e){ 
    if(e.keyCode == 37) // left arrow 
    { 
     // your action here, for example 
     $('#buttonPrevious').click(); 
    } 
    else if(e.keyCode == 39) // right arrow 
    { 
     // your action here, for example 
     $('#buttonNext').click(); 
    } 
}); 
+1

如果我们在纯Jquery世界中使用“which” – GOK 2012-07-27 12:27:10

1

我更喜欢使用这个模板:

$(document).keypress(function(e){ 
    switch((e.keyCode ? e.keyCode : e.which)){ 
     //case 13: // Enter 
     //case 27: // Esc 
     //case 32: // Space 
     case 37: // Left Arrow 
      $("#showroom").animate({left: "+=980"}); 
     break; 
     //case 38: // Up Arrow 
     case 39: // Right Arrow 
      $("#showroom").animate({left: "-=980"}); 
     break; 
     //case 40: // Down Arrow 
    } 
}); 
1

使用命名函数表达式可以帮助保持一个干净的代码:

function go_left(){console.log('left');} 
function go_up(){console.log('up');} 
function go_right(){console.log('right');} 
function go_down(){console.log('down');} 


$(document).on('keydown',function(e){ 

    var act={37:go_left, 38:go_up, 39:go_right, 40:go_down}; 
    if(act[e.which]) var a=new act[e.which]; 

});