2013-03-01 84 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

相关问题