Javascript 按下向下箭头键,单击事件被触发
在向下箭头键上,单击事件被触发,event.keycode未定义Javascript 按下向下箭头键,单击事件被触发,javascript,jquery,Javascript,Jquery,在向下箭头键上,单击事件被触发,event.keycode未定义 $(".dropdown:not(.li-search) a.dropdown-toggle", ".navbar-collapse").on("click", function(event) { var target = $(this).attr("target"); if (event.keyCode !== '40'){ if (!$(".li-menu").is(":visible") &a
$(".dropdown:not(.li-search) a.dropdown-toggle", ".navbar-collapse").on("click", function(event) {
var target = $(this).attr("target");
if (event.keyCode !== '40'){
if (!$(".li-menu").is(":visible") && target === undefined) {
location.href=this.href;
} else {
window.open(this.href, '_blank');
}
}
});
在这段代码中,我试图在“新建”选项卡中打开主菜单,但外部链接在向下箭头键按下时打开
$(".dropdown:not(.li-search) a.dropdown-toggle", ".navbar-collapse").on("click", function(event) {
event.preventDefault();
var target = $(this).attr("target");
if(event.keyCode!=='40'){
if (!$(".li-menu").is(":visible") && target===undefined) {
location.href=this.href;
}
else {
window.open(this.href,'_blank');
}
}
});
有关参考信息,请参阅键代码
为了为特定按键事件配置应用程序,当您按enter键时,标签将触发click事件。但是,事件上不会有keyCode
,因为它不是Key*
事件。如果您想知道keyCode
还可以添加keyDown
或keydup
处理程序。您还可以通过执行以下操作来处理这两个问题:
$(".dropdown:not(.li-search) a.dropdown-toggle", ".navbar-collapse").on("click keydown", function(event) {
var target = $(this).attr("target");
if(event.type === 'keydown' && event.keyCode!=='40'){
if (!$(".li-menu").is(":visible") && target===undefined) {
location.href=this.href;
}
else {
window.open(this.href,'_blank');
}
}
});
您可能还需要添加一个
事件.preventDefault()如果您希望防止出现默认浏览器行为,请将代码>放在其中。查看类下拉切换
,导航栏折叠
,我猜您正在使用引导库
如果是这样,你看到的行为是合理的。让我们来分析一下问题:
按下向下箭头键,单击事件被触发
问:您只在单击事件上绑定了处理程序,那么为什么它在按键时被触发?
答:因为这是引导下拉菜单的一个功能。为了获得更好的访问性,引导触发向上
、向下
、esc
和空格
键的向下
事件
event.keycode未定义
由于它是一个点击
事件处理程序,而不是一些键盘事件处理程序,如按键
或按键
,事件。按键代码
应该是未定义的
注意:在以下条件下使用严格等式
if(event.keyCode!=“40”)
这将检查操作数的类型和值。现在,event.keyCode总是返回一个Number
,而'40'
是一个字符串,因此上述条件将产生false
,即使keyCode是40。您应该将其更正为:
if(event.keyCode!==40)
现在,如果要停止向下键重定向,应该检查触发的事件是原始事件还是由某些js逻辑触发的。为此,您可以选择jQuery的event.isTrigger
或event.originalEvent
下面是一段代码片段:
$(".dropdown:not(.li-search) a.dropdown-toggle", ".navbar-collapse").on("click", function(event) {
var target = $(this).attr("target");
// Check if NOT an triggered event
if (!event.isTrigger) {
if (!$(".li-menu").is(":visible") && target === undefined) {
location.href = this.href;
} else {
window.open(this.href, '_blank');
}
}
});
同时添加您的html代码,不要忘记提及您正在使用哪些插件?Thanx很多朋友,如果(!event.isTrigger)有效,我喜欢您回答我问题的方式。谢谢