在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上进行选项时,它可以正常运行...因为两个事件都在触发....
答案 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/