2013-03-01 78 views
2

我想讓一個網站向上滾動,當向左箭頭被按下時,向下滾動向右箭頭。如何將左右方向鍵映射爲向上和向下鍵?

我想這一點:

$("body").keydown(function(e){ 
     console.log(e.which); 
     // left arrow 
     if ((e.keyCode || e.which) == 37) 
     { 
      e.keyCode = 38; 
      e.which = 38; 
      $("body").trigger(e); 
     } 
     // right arrow 
     if ((e.keyCode || e.which) == 39) 
     { 
      e.keyCode = 40; 
      e.which = 40; 
      $("body").trigger(e);  
     } 
    }); 

但不工作正常,你可以點我在正確的方向?

回答

1

試着控制滾動,而不是試圖觸發和向下箭頭。見下,

下面的代碼實際上滾動頁面,將$(window).height()更改爲固定的期望值。 (DEMO:http://jsfiddle.net/v5DZ9/1/

//This is for page scroll. Use a reduced height instead of $(window).height() 
//for controlled scroll. 
$(document).keyup(function (e) { 
    if (e.which == 39) { 
     window.scrollTo(0, $(window).height() + $(document).scrollTop()); 
    } else if (e.which == 37) {   
     window.scrollTo(0, $(document).scrollTop() - $(window).height()); 
    } 
}); 

DEMO:http://jsfiddle.net/v5DZ9/

注:,請謹慎使用,這個代碼是未經測試。

+0

謝謝! 這實際上非常聰明和有幫助。 我仍然好奇如何觸發事件,我嘗試了其他方法,仍然沒有運氣。 – 2013-03-01 21:54:25

+0

@Jorge keyCode屬性是事件對象中的READ-ONLY屬性。有關更多詳細信息,請參閱http://stackoverflow.com/a/8776673/297641。 – 2013-03-01 21:57:17

+0

@Jorge如果這個答案是令人滿意的,不要忘了點擊左邊的綠色複選標記來回答我的答案,將此問題標記爲已回答。如果你認爲這很有用,你也可以upvote。 :) – 2013-03-01 21:59:24

相關問題