【问题标题】:Simulate click with keyup用 keyup 模拟点击
【发布时间】:2013-06-07 16:39:24
【问题描述】:

我正在尝试使用 jQuery 将键盘导航添加到一对下一个/上一个链接。

我原以为会这么简单,但显然不是:

 $(document.documentElement).keyup(function (event) {
   if (event.keyCode == 37) {
     $('a.next').click();
   } else if (event.keyCode == 39) {
     $('a.prev').click();
   }
 });

非常感谢任何帮助。

【问题讨论】:

  • 什么有效,什么无效?
  • 什么是document.documentElement?也使用event.which 而不是event.keyCode
  • 链接在点击时有效,但在 keyup 时无效。 keyup 成功将测试消息打印到控制台中。
  • 使用event.which 代替event.keyCode

标签: javascript jquery keyboard-shortcuts


【解决方案1】:
$(document).on('keyup', function (event) {
  if (event.which === 37) {
    window.location.hash = $('a.next').attr('href'); 
  }
  else if (event.which === 39) {
    window.location.hash = $('a.prev').attr('href');
  }
});

http://codepen.io/vermilion1/pen/eCtnv

【讨论】:

    【解决方案2】:

    问题是你不能.click() 一个<a> 标签。您可以添加此代码 onload 工作:

    $('a').on('click', function(){
        window.location = this.href;
    });
    

    【讨论】:

      【解决方案3】:

      首先你应该定义下一个和上一个链接的点击事件,然后在你的代码中改变:

      $('a.next').click();
      $('a.prev').click();
      

      作者:

      $('a.next').trigger('click');
      $('a.prev').trigger('click');
      

      【讨论】:

      • “定义点击事件”是什么意思?它们已经是指向下一页和上一页的链接,我还需要做什么?
      • -1 $('a.next').trigger('click')$('a.next').click() 相同。来自文档的.click 的描述。 将事件处理程序绑定到“click”JavaScript 事件,或在元素上触发该事件
      • 我在这里试过了:codepen.io/sanjaypoyzer/pen/LHCEe 似乎什么也没做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 2022-01-26
      • 1970-01-01
      • 2021-01-04
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多