输入关键触发链接

时间:2011-08-04 19:16:51

标签: javascript jquery hyperlink scroll

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

$('a.panel').click(function () {
};

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

 if($(this).attr('href')=="#item2")
{
//do some processsing 
}

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

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

这有可能吗?

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

4 个答案:

答案 0 :(得分:7)

焦点+输入触发点击事件,但前提是锚点具有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');

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

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

答案 1 :(得分:4)

按下回车键时,您可以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
});

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

您只需要确定触发点击的具体元素,但这取决于您正在做什么/做什么。我会说我不是真的推荐这个,但我会给你怀疑的好处。

在我看来,更好的选择是focus()应该点击的链接,让用户可以选择按Enter键,这将触发点击事件。

  

我想关注这个链接,但我不知道如何做到这一点,你能解释一下吗?

只需使用$(element).focus()即可。但是,再次,你必须更具体,并有办法确定哪个元素应该获得焦点,何时。当然,用户可能会采取导致链接失去焦点的操作,例如点击其他位置。我不知道你的应用程序做了什么或行为是什么,所以只要做你认为最好的,但要记住用户已经期望他们的浏览器有某种行为,并且可能没有意识到他们需要按“输入”,除非你告诉他们。

如果你选择使用“按回车”方法而不是关注链接,你可能也想要bind()unbind()按键功能,所以它不会被调用当你不需要它时。

相关:

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

$('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.panel上的按键事件,如果是,则回车键将触发所关注的面板元素的click事件。