【问题标题】:Is there a Javascript or jQuery event that triggers on following a focused link with the keyboard?是否有 Javascript 或 jQuery 事件在使用键盘关注焦点链接时触发?
【发布时间】:2010-09-23 11:02:02
【问题描述】:

我正在使用 jQuery focus()blur() 在键盘导航(制表符)期间突出显示图像链接,但需要能够在通过键盘上的“Enter”跟随链接时运行一些代码。

是否有内置事件可以执行此操作,或者我是否需要执行绑定keypress 之类的操作并检查“Enter”键?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:
    <a href="http://www.google.com" id="testlink">CatchMe</a>
    
    $('#testlink').attr("rel", $('#testlink').attr("href"));
    $('#testlink').attr("href","");
    $('#testlink').keydown(function(event) {
        if (event.keyCode == '13') {
            alert("Don't you dare!");
        }
        if (event.keyCode == '71') {
            location.href=$('#testlink').attr("rel");
        }
    });
    

    此代码删除 href(将其存储在 rel 中)。现在你可以捕捉到keydowns。您可以随心所欲地响应回车键 (13)(在这种情况下为警报)。之后,如果你愿意,你可以让浏览器跟随链接。然而,在这个例子中,我只让浏览器在按下“g”键(代码 71)时跟随链接。

    请注意,当 href 值类似于 'javascript:alert("blah")' 时,这也有效。

    编辑:这要容易得多(受this问题的答案启发):

    $('#testlink').click(function () {alert("hi"); return false; });
    

    (如果您确实希望在警报之后跟随链接,则返回 true)

    【讨论】:

    • 我猜这意味着没有特定的 'onEnter' 类型事件,但是 .keydown(function(event) { if (event.keyCode == '13') { } 工作正常。谢谢
    • 没问题。 (顺便说一句:据我所知,onEnter 不存在。但是,只要您在事件处理函数中返回 true 或 false,点击事件似乎会响应键盘引发的链接激活)
    • 你可以使用 $.trigger() 创建你自己的事件——看看api.jquery.com/trigger
    【解决方案2】:

    看下面:

    focusin

    focusout

    另外,如果你正在进入按键处理场景,请阅读quirksmode

    最终链接非常重要,因为每个浏览器都有自己的特殊之处,即有些事件会被忽略,有些事件会在您不希望它们发生时被触发。

    【讨论】:

      【解决方案3】:

      详细说明 Jochem 的回复。您可以使用 .trigger() 来创建自己的事件,如下所示:

      $('#testlink').keydown(function(event) {
          if (event.keyCode == '13') {
              // alert("Don't you dare!");
              $('#testlink').trigger('enterdown');
          }
      });
      

      还有:

      $('#testlink').bind('enterdown', function(event) {
          alert('Enter was pressed.');
      });
      

      【讨论】:

        猜你喜欢
        • 2012-01-05
        • 2011-01-12
        • 2013-05-27
        • 1970-01-01
        • 2011-02-10
        • 1970-01-01
        • 2020-12-09
        • 1970-01-01
        相关资源
        最近更新 更多