2014-05-25 197 views
0

我知道這個問題已被問及已回答之前,我已經找到了答案,但我有一個問題,我需要一些後續信息,並作爲我的代表是太低了,我不能評論相關答案來要求它!jQuery - 綁定鍵按功能

我正在使用sygmoral的答案this post,這應該是頁面的第二個答案。我使用兩個函數來操作圖像滑塊,一個向左滑動,一個向右滑動。當用鼠標點擊屏幕上的按鈕時,每個功能都可以正常運行,但是當使用sygmoral的按鍵功能時,只有其中一個左/右箭頭鍵會正確觸發功能...

按鍵功能代碼像這樣:

$(document).keydown(function(e){ 
     switch(e.which) { 
      case 37: 
      slideLeft(); 

      case 39: 
      slideRight(); 

      default: return;     
     } 
     e.preventDefault(); 
    }); 

case 39正常工作。情況37觸發slideLeft()函數,並且圖像向左滑動,然後立即滑回到右側。如果我交換案件39和37,則會發生相反的情況。基本上,只有第二種情況才能正常工作。

任何人都可以給我一個建議,爲什麼這可能是?

回答

0

你缺少switch語句 的每個分支break;關鍵字,所以如果你按下左箭頭,你將進入的情況下37 - slideLeft()進行處理,然後將代碼的其餘部分太(slideRight();return;

看到MDN switch文檔。

這裏是你需要的東西:

$(document).keydown(function(e){ 
    switch(e.which) { 
     case 37: 
      slideLeft(); 
      break; 
     case 39: 
      slideRight(); 
      break; // isn't needed in your case 
     default: 
      return;     
    } 
    e.preventDefault(); 
}); 
+0

完美,謝謝:)太簡單了!顯而易見,我從來沒有使用過switch()嗎? –

0

您調用函數後失蹤的break;,在每種情況下...

例如,而不是

case 37: 
    slideLeft(); 

你應該有

case 37: 
    slideLeft(); 
    break; 

有關更多信息在JavaScript中切換語句,請參閱http://www.w3schools.com/js/js_switch.asp

+0

感謝的人,很好的答案。儘管你只是對這個帖子感興趣! –

+0

不完全,我在10:46:26發佈,而不是10:50:37。 – hakazvaka

+0

所以你是!對不起,我沒有意識到你可以看到確切的時間。我只是假定列表中的第一個答案是較舊的答案。我很抱歉。 –