【发布时间】:2011-11-03 18:39:26
【问题描述】:
我将此代码添加到我的网站:
$(document).bind('keydown', 'i', function(){
$("#af").click();
return false;});
问题在于它可以与任何键一起使用,而不仅仅是“i”。怎么了?
【问题讨论】:
我将此代码添加到我的网站:
$(document).bind('keydown', 'i', function(){
$("#af").click();
return false;});
问题在于它可以与任何键一起使用,而不仅仅是“i”。怎么了?
【问题讨论】:
在您的代码中,'i' 是一个传递给回调函数的参数。它对您的事件将响应的字符代码没有影响。你可以通过
$(document).bind('keydown', function(e){
if (String.fromCharCode(e.keyCode) == 'I') {
$("#af").click();
e.preventDefault();
}
});
【讨论】:
.bind('keydown', 'i', function),而是重载事件命名空间以提供密钥。对于你的例子,你会做bind('keydown.i', function)。
因为jQuery Doc说:
event.which 规范了 event.keyCode 和 event.charCode。它是 建议观看 event.which 进行键盘按键输入。更多 详情请阅读event.charCode on the MDC。
那就更好用了
$(document).bind('keydown', function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 73) {
$("#af").click();
return false;
}
});
【讨论】:
正确的做法是:
$(document).bind('keydown', function(e){
if (e.keyCode =='i') {
$("#af").click();
return false;
}
});
【讨论】:
keyCode 将是一个数值(例如 i = 73),您需要查找键值对;或使用String.fromCharCode(code)