jQuery检测非表单元素(导航菜单项)是否具有焦点

时间:2017-10-02 23:00:34

标签: javascript jquery focus

在主页上,我有一个菜单栏在页面加载时不可见(即在可见区域上方的屏幕外),并且一旦滚动位置超过50px就会从顶部向下移动(动画)以显示为常规(固定)导航菜单栏。这是通过jQuery完成的。当页面完全滚动到顶部时,菜单栏会再次向上/向上移动。

但出于辅助功能的原因,当有人多次使用Tab键进行聚焦并选择该导航栏中的菜单项(不滚动)时,菜单也会出现。

作为第一次测试,我尝试了这个功能:

jQuery(document).ready(function() { 
    jQuery('#menu-item-55').focus(function() {
                 alert("yes!");
    });
});

(稍后会触发将菜单带入页面可见区域的动画)

如果我在获得焦点的表单字段上使用它,则此测试函数有效,但它不会在导航菜单中的链接上工作,显然是因为focus()仅适用于表单元素。

有没有办法让它也能用于链接,还是有其他任何方法可以让我检测链接的焦点?

2 个答案:

答案 0 :(得分:0)

我自己找到了答案:

focus()无法处理链接,但focusin() 确实

答案 1 :(得分:0)

如果你正在使用jQuery 1.6+,那么你可以使用:focus选择器

$(document).ready(function() {
    if ($('#menu-item-55').is(':focus')) {
        alert("yes!");
    });
});