2010-11-05 9 views
35

Je souhaite donner à mon curseur de contenu la possibilité de répondre aux touches (FLÈCHE GAUCHE et Touche FLÈCHE DROITE). J'ai lu à propos de certains conflits entre plusieurs navigateurs et systèmes d'exploitation.jQuery keypress gauche/droite de navigation

L'utilisateur peut naviguer dans le contenu lorsqu'il se trouve sur le site Web global (corps).

Pseudo Code:

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 

je besoin d'une solution sans croisement (Browsers, systèmes d'exploitation) des conflits.

Répondre

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

Ne devrions-nous pas utiliser 'which' au lieu de' keyCode' maintenant avec jQuery? – Shikiryu

+0

Je ne sais pas, mais regardez la démo sur http://api.jquery.com/keydown/ Là, e.keyCode est utilisé. – elektronikLexikon

+0

oui, vous devriez utiliser .which() pour obtenir le code clé. L'exception est si vous essayez d'obtenir du texte brut avant toute normalisation (je suppose que cela signifie des choses comme la détection de la touche £ plutôt que simplement le caractère £) – carpii

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

Si nous utilisons "qui" den son assez – GOK

6

Cela fonctionne bien pour moi:

$(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

Si nous utilisons "qui" dans le monde pur JQuery – GOK

1

Je préfère utiliser ce modèle:

$(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

L'utilisation de l'expression des fonctions nommées peut aider à garder un code propre:

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]; 

});