JQuery:专注于浏览器的重点

时间:2016-02-19 14:30:29

标签: javascript jquery focus

在不考虑性能的情况下,我始终强调$(":focus")返回的jquery对象相当于$(document.activeElement)

但是,如果您正在进入浏览器调试器并评估$(":focus"),那么您将无法获得任何元素,而$(document.activeElement)仍将返回焦点元素。我正在考虑某种观察者效果问题,但如果将焦点设置在浏览器之外,情况也是如此。

根据jquery documentation,焦点选择器应该" 选择元素,如果它当前是"。由于没有提及浏览器焦点,我想知道这是否是预期的行为或是否应该报告为错误。

如果您想尝试此行为,我创建了一个JsFiddle示例。当您将注意力从输入(在表单内,在控制台或其他应用程序中)转移时,您将看到$(":focus")如何做出反应的文本。

2 个答案:

答案 0 :(得分:2)

查看:focus选择器的来源:

"focus": function( elem ) {
    return elem === document.activeElement
        && (!document.hasFocus || document.hasFocus()) 
        && !!(elem.type || elem.href || ~elem.tabIndex);
}

因此,为了返回元素,elem必须等于document.activeElement,文档必须具有焦点,元素必须具有typehreftabIndex财产。

两者不等同

修改

当您从输入中移除焦点时,在您的小提示中,document.activeElement变为body,文档是否具有焦点无关紧要。

答案 1 :(得分:0)

正如您在此处所见CSS :focus Selector

  

:接受键盘事件或其他用户输入的元素允许使用焦点选择器。

document.activeElement可以包含页面中的任何或几乎任何元素