我正致力于创建更易于访问的导航,特别是想要确定是否使用了按键。虽然我想弄清楚为什么这对我不起作用,但我也想知道几种做同样事情的方法之间的区别。那些方法是:
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) {...});
答案 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()。