Javascript 输入键触发链接
我在一个页面上有一个JQuery滚动条,其中每个项目都是一个带有id的div。每个div都有一个指向滚动条中下一个div的链接(都在同一页面上) 我在“panel”类中有一个指向所有链接的单击事件,我在其中检查哪些链接被单击,然后相应地执行一些ajax处理: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 我需要它,用户可以按回车键,而不是点击链
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()
键按功能,因此在不需要时不会调用它
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');