【问题标题】:How can I map the left and right arrow keys to act like up and down keys?如何将左右箭头键映射为向上和向下键?
【发布时间】:2013-03-01 21:11:28
【问题描述】:

我试图让网站在按下左箭头时向上滚动,当按下右箭头时向下滚动。

我正在尝试这个:

    $("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 );     
        }   
    });

但是工作不正常,你能指出我正确的方向吗?

【问题讨论】:

    标签: jquery keydown


    【解决方案1】:

    尝试控制滚动而不是尝试触发向上和向下箭头。见下文,

    下面的代码实际上是逐页滚动的,将$(window).height() 更改为一个固定的理想值。 (演示: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());
        }
    });
    

    演示: http://jsfiddle.net/v5DZ9/

    注意:谨慎使用,此代码未经测试。

    【讨论】:

    • 谢谢!这实际上非常聪明和有用。还是很好奇怎么触发事件,试过其他方法还是不行。
    • @Jorge keyCode 属性是事件对象中的只读属性。有关详细信息,请参阅stackoverflow.com/a/8776673/297641
    • @Jorge 如果此答案令人满意,请不要忘记单击我的答案左侧的绿色复选标记以将此问题标记为已回答。如果您认为这很有用,您也可以投票。 :)
    猜你喜欢
    • 2011-06-21
    • 2010-09-21
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2023-03-27
    • 2018-10-23
    相关资源
    最近更新 更多