如何在用户向后跳转而不向前跳转时才能触发事件

时间:2014-03-17 13:23:27

标签: 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('check it out');
        $(this).parent().parent().removeClass('hover');
    });
 }
    else if (e.which === 9 && e.shiftKey) {
      $(this).parent().removeClass('hover');
    console.log("back Tab removed");
   }
});

以下是我正在使用的代码,但它似乎无法正常工作。第一个if语句在返回tabbing(shift选项卡)时仍会触发。

问题是,当我点击shift选项卡返回tab时,tab事件也会触发,这就是问题所在。

非常感谢任何帮助或指导。谢谢。

这是JSFiddle请尝试后面的标签。请注意,当您在子菜单中的最后一个LI上进行选项时,它可以正常运行...因为两个事件都在触发....

1 个答案:

答案 0 :(得分:1)

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

我已经简化了您要做的事情,并且它可以作为一个独立的代码:

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

你想要达到什么目的?看起来您只想在标签上打开子菜单,在这种情况下,您可以大规模简化您的代码:http://jsfiddle.net/X3cLb/4/