我在页面上有一个JQuery滚动条,其中每个项目都是带有id的div。每个div都有一个指向滚动条中下一个div的链接(全部在同一页面上)
$('a.panel').click(function () {
};
我在“面板”类的所有链接上都有一个点击事件,我在其中检查点击了哪些链接,然后相应地进行了一些ajax处理:
if($(this).attr('href')=="#item2")
{
//do some processsing
}
一旦处理完成,我就使用scrollTo JQuery方法滚动到下一个div
我需要让用户可以按回车键而不是点击链接。 现在的问题是: 一个。我在同一页面上有几个链接,都需要有这种行为。 湾我需要区分哪个链接触发了click事件并进行了一些服务器端处理。
这有可能吗?
我很感激快速而有帮助的回复!!感谢一百万的帮助!
答案 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.target
或this
关键字来确定触发事件的链接。
$('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事件。