关于按键正确用法的JS / JQuery

时间:2016-05-17 16:58:05

标签: javascript jquery

我正致力于创建更易于访问的导航,特别是想要确定是否使用了按键。虽然我想弄清楚为什么这对我不起作用,但我也想知道几种做同样事情的方法之间的区别。那些方法是:

app/cache/prod/translations/catalogue.hu_HU.ba674f8d2fd06750dcd7ee5bb021c1b905b518ea.php

&安培; compile 'com.squareup.okhttp:okhttp:2.4.0'

&安培; $('ul li a').on('keypress', function(e){...});

有什么区别?是否有正确的'一个用于这个siutation?无论哪种方式,他们都没有真正为我工作。我已经在我编写的脚本中设置了控制台日志,当控制台记录脚本加载时,它会检测到keydown,但是它没有检测到按下的返回键,整个脚本看起来像:

$('ul li a').keypress(function(e) {...});

谢谢!

**编辑**

我从来没有发现为什么返回键(或向下箭头)不起作用,也没有在控制台中触发keydown事件,但我确实发现空格键是可访问性的最佳方法,最终结果如下:

$('ul li a').bind('keypress', function(e) {...});

2 个答案:

答案 0 :(得分:1)

  • 在内部,.bind直接映射到当前版本的jQuery中的.on。 (同样适用于.live。)因此,如果您使用.bind,则会产生微小但实际上无关紧要的性能影响。

    但是,.bind可能会在以后的版本中被删除。我没有理由继续使用.bind,而且每个理由都倾向于使用.on

如果您查看$.fn.bind的源代码,您会发现它只是on的重写函数:

function (types, data, fn) {
    return this.on(types, null, data, fn);
}
  • 对于keypress功能,我不推荐它,因为它只适用于现有元素;如果在运行keypress后元素将存在,它将不会处理新元素。

    相反,您可以使用delegate

    $(document).delegate('ul li a','keypress',function(event){
          //........
    })
    

答案 1 :(得分:0)

.on()是在jQuery 1.7+中执行所有事件的首选方法

  

从jQuery 1.7开始,.on()方法提供了所需的所有功能   用于附加事件处理程序。

来自官方文档:http://api.jquery.com/on/

其他附加事件的方法似乎已被弃用:

  

有关从旧的jQuery事件方法转换的帮助,请参阅.bind(),   .delegate()和.live()。