2012-12-12 113 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

相關問題