【发布时间】:2010-09-23 11:02:02
【问题描述】:
我正在使用 jQuery focus() 和 blur() 在键盘导航(制表符)期间突出显示图像链接,但需要能够在通过键盘上的“Enter”跟随链接时运行一些代码。
是否有内置事件可以执行此操作,或者我是否需要执行绑定keypress 之类的操作并检查“Enter”键?
【问题讨论】:
标签: javascript jquery
我正在使用 jQuery focus() 和 blur() 在键盘导航(制表符)期间突出显示图像链接,但需要能够在通过键盘上的“Enter”跟随链接时运行一些代码。
是否有内置事件可以执行此操作,或者我是否需要执行绑定keypress 之类的操作并检查“Enter”键?
【问题讨论】:
标签: javascript jquery
<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)
【讨论】:
【讨论】:
详细说明 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.');
});
【讨论】: