Javascript 输入键触发链接

Javascript 输入键触发链接,javascript,jquery,hyperlink,scroll,Javascript,Jquery,Hyperlink,Scroll,我在一个页面上有一个JQuery滚动条,其中每个项目都是一个带有id的div。每个div都有一个指向滚动条中下一个div的链接(都在同一页面上) 我在“panel”类中有一个指向所有链接的单击事件,我在其中检查哪些链接被单击,然后相应地执行一些ajax处理: if($(this).attr('href')=="#item2") { //do some processsing } 处理完成后,我使用scrollTo JQuery方法滚动到下一个div 我需要它,用户可以按回车键,而不是点击链

我在一个页面上有一个JQuery滚动条,其中每个项目都是一个带有id的div。每个div都有一个指向滚动条中下一个div的链接(都在同一页面上)

我在“panel”类中有一个指向所有链接的单击事件,我在其中检查哪些链接被单击,然后相应地执行一些ajax处理:

 if($(this).attr('href')=="#item2")
{
//do some processsing 
}
处理完成后,我使用scrollTo JQuery方法滚动到下一个div

我需要它,用户可以按回车键,而不是点击链接。 现在的问题是: A.我在同一页上有几个链接,它们都需要有这种行为。 B我需要区分哪个链接触发了单击事件,并进行一些服务器端处理

这可能吗


我感谢您的快速和有益的回复!!非常感谢你的帮助

使用
e.target
this
关键字确定触发事件的链接

$('a.panel').click(function (e) {
  //e.target or this will give you the element which triggered this event.
};
按下enter键时,您可以
trigger()
选择所需元素的单击事件。例如:

$(document).keypress(function(e) {
    if ((e.keyCode || e.which) == 13) {
        // Enter key pressed
        $('a').trigger('click');
    }
});

$('a').click(function(e) {
    e.preventDefault();
    // Link clicked
});
演示:

您只需找出触发单击的特定元素,但这取决于您的操作方式。我会说,我并不是真的建议这样做,但我会给你的好处,怀疑

在我看来,一个更好的选择是
focus()
应该单击的链接,让用户有选择地按enter键,这将触发click事件


我想把重点放在链接上,但我不知道到底该怎么做,你能解释一下吗

只需使用
$(element).focus()
。但再一次,您必须更加具体,并且有一种方法来确定哪个元素应该接收焦点,以及何时接收焦点。当然,用户可能会采取导致链接失去焦点的操作,比如单击其他地方。我不知道你的应用程序是什么样子的,所以就做你认为最好的,但请记住,用户已经期望他们的浏览器有某种行为,除非你告诉他们,否则他们可能不会意识到他们需要按“回车”键

如果您确实选择使用“按enter键”方法而不是聚焦链接,那么您可能也希望
bind()
unbind()
键按功能,因此在不需要时不会调用它

相关的:

这将在任何a.panel上检测到一个向上键事件,如果是回车键,则会触发被聚焦的panel元素的单击事件。

Focus+enter将触发单击事件,但仅当锚具有
href
属性时(至少在某些浏览器中,如最新的Firefox)。作品:

$('').attr('href','anythingWillDo')。on('click',function(){
警报('Has href,因此可以通过键盘触发');
//如果需要,抑制哈希更新
返回false;
}).文本(“作品”)。附录(“正文”);
不起作用(浏览器可能认为没有可采取的操作):

$(“”).on('click',函数(){
警报('否href,因此无法通过键盘触发');
}).text('不起作用').appendTo('正文');

我很确定focus+enter键将触发
click()
,您确定这不会像预期的那样工作吗?还是我没有抓住问题的重点?谢谢你的回答,我不知道你的意思是什么?我需要设置焦点吗?如何工作?你所说的
是什么意思?我需要让用户可以按enter键而不是单击链接“
?只有一个链接吗?如果是这样的话,你是在问如何检查是否按下了“回车”键吗?我希望当用户点击键盘上的回车键时,它的工作原理与使用鼠标点击实际链接的工作原理相同。它是一个滚动条,每张幻灯片都有自己的链接。我已经在使用它了,我想添加一个选项,他们可以按键盘上的回车键,并触发链接我想把重点放在链接上,但我不知道该怎么做,你能解释一下吗?(这可能是个愚蠢的问题,但我不是js方面的专家)我会试试这个,谢谢:)活动“直播”代表什么?这是否会触发我的点击事件并自行处理我的情况?换句话说,它是否会像用户单击实际链接一样触发单击事件?我不需要首先关注链接吗?我在同一个页面上有几个链接?.live是核心jQuery插件中的jQuery方法,它允许您将事件绑定到对象,即使它们尚未呈现。面板本身需要有焦点,就像你的点击事件一样,是的,它会触发点击事件,就像用户点击了那个特定的面板一样。
$(document).keypress(function(e) {
    if ((e.keyCode || e.which) == 13) {
        // Enter key pressed
        $('a').trigger('click');
    }
});

$('a').click(function(e) {
    e.preventDefault();
    // Link clicked
});
$('a.panel').live('keyup', function (evt) {
    var e = evt || event;
    var code = e.keyCode || e.which;
    if (code === 13) {  // 13 is the js key code for Enter
        $(e.target).trigger('click');
    }
});
$('<a />').attr('href', '#anythingWillDo').on('click', function () {

    alert('Has href so can be triggered via keyboard.');

    // suppress hash update if desired
    return false;

}).text('Works').appendTo('body');
$('<a />').on('click', function () {
    alert('No href so can\'t be triggered via keyboard.');
}).text('Doesn\'t work').appendTo('body');