在不考虑性能的情况下,我始终强调$(":focus")
返回的jquery对象相当于$(document.activeElement)
。
但是,如果您正在进入浏览器调试器并评估$(":focus")
,那么您将无法获得任何元素,而$(document.activeElement)
仍将返回焦点元素。我正在考虑某种观察者效果问题,但如果将焦点设置在浏览器之外,情况也是如此。
根据jquery documentation,焦点选择器应该" 选择元素,如果它当前是"。由于没有提及浏览器焦点,我想知道这是否是预期的行为或是否应该报告为错误。
如果您想尝试此行为,我创建了一个JsFiddle示例。当您将注意力从输入(在表单内,在控制台或其他应用程序中)转移时,您将看到$(":focus")
如何做出反应的文本。
答案 0 :(得分:2)
查看:focus
选择器的来源:
"focus": function( elem ) {
return elem === document.activeElement
&& (!document.hasFocus || document.hasFocus())
&& !!(elem.type || elem.href || ~elem.tabIndex);
}
因此,为了返回元素,elem
必须等于document.activeElement
,文档必须具有焦点,元素必须具有type
,href
或tabIndex
财产。
两者不等同
修改强>
当您从输入中移除焦点时,在您的小提示中,document.activeElement
变为body
,文档是否具有焦点无关紧要。
答案 1 :(得分:0)