2012-12-12 65 views
0

我想使用右箭头键在类之间进行切换,但我遇到使用箭头键触发事件的问题。相反,它在鼠标点击时起作用。右箭头键keyCode,它是39.我已经尝试过并获得相同的结果。jQuery /箭头键不会触发键盘事件

$(document).ready(function(){ 
    $(document).keyup(function(evt){ 
    console.log(evt.keyCode);// used to verify the keyCode 39 

    if (evt.keyCode == 39) { 
     $('body').toggle(function(){ 
      $('body').removeClass().addClass('narrow'); 

     }, function() { 
     $('body').removeClass().addClass('large'); 

     }, function() { 
     $('body').removeClass(); 
     }); 
     } 
     else { 
     return false; 
    }; 
    ) 
    }); 
+1

你已经尝试了'evt.which',而不是'.keyCode'测试? – FixMaker

+0

感谢您的回复,是的,我尝试了两个,并使用两个,但我得到同样的东西。 – user1898151

回答

1

编辑 -

一切都是正确的,除了切换。下面是我假设你正在尝试做的事情 -

http://jsfiddle.net/jmsessink/nxJxj/3/

$(function() { 

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

     if (evt.keyCode == 39) { 

      if ($('body').hasClass('narrow')) { 
       $('body').removeClass('narrow').addClass('large'); 
      } else if ($('body').hasClass('large')) { 
       $('body').removeClass('large'); 
      } else { 
       $('body').addClass('narrow'); 
      } 

     } 

    }); 

}); 
+0

感谢您的回复。这有用,谢谢!太好了,但我的印象是,如果没有以.removeClass()命名的类,它会删除所有类。来自http://api.jquery.com/removeClass/:“如果包含一个类名作为参数,那么只有该类将从匹配元素集中移除。如果参数中没有指定类名,所有班级将被删除。“关于我在哪里出错了原始代码的任何想法?再次感谢。 – user1898151

+0

是的,你是对的,但为什么要删除所有的类,当你知道哪些要删除?如果你需要为它增加一个类来进行一般造型,那么你在这一点上会很失败,因为它也会被删除:)只是我的两分钱。 **编辑 - 当然,你可能不会遇到这个问题的身体,但只是在一般用法这就是为什么我不会删除所有类。 – JSess

+0

是的。不幸的是,由于我缺乏声誉,我无法给你任何,但再次感谢。 – user1898151

相关问题