输入关键触发链接

Nin*_*aNa 5 javascript jquery scroll hyperlink

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

$('a.panel').click(function () {
};
Run Code Online (Sandbox Code Playgroud)

我在"面板"类的所有链接上都有一个点击事件,我在其中检查了哪些链接被点击,然后相应地执行一些ajax处理:

 if($(this).attr('href')=="#item2")
{
//do some processsing 
}
Run Code Online (Sandbox Code Playgroud)

一旦处理完成,我使用scrollTo JQuery方法滚动到下一个div

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

这有可能吗?

我很感激快速而有用的回复!感谢一百万的帮助!

Bra*_*ill 7

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

$('<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');
Run Code Online (Sandbox Code Playgroud)

不起作用(浏览器可能认为没有采取任何行动):

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


Wes*_*rch 5

trigger()按下Enter键后,您可以单击想要的任何元素的click事件。例:

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

$('a').click(function(e) {
    e.preventDefault();
    // Link clicked
});
Run Code Online (Sandbox Code Playgroud)

演示:http//jsfiddle.net/eHXwz/1/

您只需要找出触发点击的特定元素即可,但这取决于您的操作方式。我会说我真的不建议这样做,但是我会给您带来疑问的好处。

我认为,更好的选择是改为focus()应单击该链接,并让用户可以选择按Enter,这将始终触发click事件。

我想专注于链接,但是不熟悉该怎么做,您能解释一下吗?

只需使用$(element).focus()。但是再次,您将必须更加具体,并有一种方法确定哪个元素应该获得焦点以及何时获得焦点。当然,用户可能会采取会使链接失去焦点的操作,例如单击其他位置。我不知道您的应用程序的运行方式或行为,因此,请按照您认为最好的方式运行,但是请记住,用户已经期望浏览器具有某种行为,除非您有可能,否则他们将不会意识到需要按“ Enter”键。告诉他们。

如果您确实选择使用“按下Enter”方法而不是将焦点放在链接上,那么您可能也希望bind()同时unbind()使用keypress函数,因此在不需要它时不会调用它。

有关:


Sha*_*oli 0

使用e.targetthis关键字来确定哪个链接触发了事件。

$('a.panel').click(function (e) {
  //e.target or this will give you the element which triggered this event.
};
Run Code Online (Sandbox Code Playgroud)