【问题标题】:Adding events to scrollTo plugin for scrolling keyboard navigation将事件添加到 scrollTo 插件以用于滚动键盘导航
【发布时间】:2012-06-21 08:00:51
【问题描述】:

我正在尝试将键盘导航添加到网站设计中,我一直在关注此Adding Keyboard Navigation tutorial by Remy Sharp,但我似乎无法使其适应我的需求。

我想将此代码添加到 scrollTo 插件,这样当用户单击向上或向下键时,页面将滚动到下一个或上一个部分。

这是雷米翻过的代码:

$(window).keyup(function (event) { 

            if(event.keyCode == 40) { //down key
            $('#nav-bar #nav li.current').parent().prev().find('a').click();    
            } else if (event.keyCode == 38) { //up key
              $('#nav-bar #nav li.current').parent().next().find('a').click()
            }
        });

我已经针对我的 HTML 标记进行了调整,我将使用向上和向下箭头键,就像他向左和向右一样,但除此之外,它与他的几乎相同。在他的版本中,他将它添加到一个名为 codaSlider 的插件中,我想知道是否可以将它添加到我拥有的 scrollTo plugin 中,是否有人对如何做到这一点有任何想法?

这是他完成的代码:

$(document).ready(function () {
  $('#coda-slider-1').codaSlider();

  $('body').keyup(function (event) {
    var direction = null;

    // handle cursor keys
    if (event.keyCode == 37) {
      // slide left
      direction = 'prev';
    } else if (event.keyCode == 39) {
      // slide right
      direction = 'next';
    }

    if (direction != null) {
      $('ul a.current').parent()[direction]().find('a').click();
    }
  });
});

【问题讨论】:

    标签: jquery jquery-plugins keyboard navigation scroll


    【解决方案1】:

    不确定您真正想要做什么,但这里有一个使用 keyboardJS 和 scrollTo jquery 插件的示例:

    http://jsfiddle.net/Raildecom/TwJAM/

    告诉我它是否符合您的需求!

    编辑:

    这是一个带有限制的新版本:http://jsfiddle.net/Raildecom/TwJAM/4/

    你可以调整两个参数:

    //Handle keyDown events throttling
    //Will execute one event every 2sec when the user hold the key
    var throttleKeyDown = 2000;
    
    //Handle KeyUp events throttling
    //Will wait 0.3sec after the user release the key to avoid "double click" effect
    var throttleKeyUp = 300;
    
    //Parent node. Doesn't have to be ul
    var node = $('ul');
    

    【讨论】:

    • 嘿,伊曼纽尔,对不起,我在上次评论时误按了输入。谢谢您的答复。太神奇了,这几乎正是我正在寻找的东西,我以前从未听说过 keyboardJS(即使在寻找解决方案 2 天之后)。唯一的问题是,如果用户错误地双击箭头键两次,它会跳动一点,有时它不会注册滚动功能,只是像默认浏览器滚动一样滚动,但除此之外它就在现场。谢谢你的分享。如果还有其他解决方案,我仍然很想知道。
    • 没问题 :) 我编辑了我的代码。告诉我现在是否效果更好
    • 非常感谢您抽出宝贵时间这样做,Emmanuel。对此,我真的非常感激。我真的希望我不要在这里碰运气,但是实现左右键有多容易呢?例如,如果我按下右键,页面会向下滚动,而左键会向上滚动?
    • 真的很简单!使用keyboardJS,您可以像这样绑定多个键:“下,右”/“上,左”。您也可以像这样创建组合:“a+b”
    • 如果您已解决问题,请将此问题标记为已回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多