Javascript 如何仅在用户向后而非向前切换时触发事件

Javascript 如何仅在用户向后而非向前切换时触发事件,javascript,jquery,keypress,Javascript,Jquery,Keypress,在jQuery中,如何仅在用户向后而不是向前切换时触发事件 $('.menu-item-has-children a').keydown(function (e) { if(e.which === 9 && (!e.shiftKey)){ console.log('Tabin forward'); $('.sub-menu li:last-child').focusout(function() { console.log

在jQuery中,如何仅在用户向后而不是向前切换时触发事件

$('.menu-item-has-children a').keydown(function (e) {
    if(e.which === 9 && (!e.shiftKey)){
        console.log('Tabin forward');
        $('.sub-menu li:last-child').focusout(function() {
          console.log('check it out');
        $(this).parent().parent().removeClass('hover');
    });
 }
    else if (e.which === 9 && e.shiftKey) {
      $(this).parent().removeClass('hover');
    console.log("back Tab removed");
   }
});
这是我正在使用的代码,但它似乎不起作用。返回制表符(shift tab)时仍会触发第一个if语句

问题是当我点击shift tab to back tab时,tab事件也会触发,这就是问题所在

任何帮助或指导都将不胜感激。多谢各位


这是一个请试试后面的标签。请注意,当您在子菜单中的最后一个LI上返回制表符时,所有这些都有效。。。因为这两个事件都在触发…

可能是您将keydown事件绑定到特定元素,而不是整个文档

我已经简化了您尝试执行的操作,它作为一段独立的代码工作:

$(document).keydown(function (e) {
    if(e.which !== 9) return false;
    if(e.shiftKey){
        console.log('back Tab removed');
    }else{
        console.log("Tabin forward");
    }
});

你想达到什么目标?看起来您只是想打开选项卡上的子菜单,在这种情况下,您可以大大简化您的代码:

您可以为我们设置一个选项卡吗?这两个事件都触发是什么意思?不,它们不是。我没注意到你不能在JSFIDLE中制表。。。但这两个事件都会触发。我认为后选项卡在后选项卡时会触发,但一旦有人删除shift键,tab forward events会触发将访问的选项卡放入数组并比较用户的行为。