[英]JQuery :focus when the browser ain't focused
在不考虑性能的情况下,我总是坚韧地将$(":focus")
返回的jquery对象等同于$(document.activeElement)
。
但是,如果您要进入浏览器调试器并评估$(":focus")
,则您将不会获得任何元素,而$(document.activeElement)
仍将返回聚焦的元素。 我正在考虑某种观察者效果问题,但是如果将焦点设置在浏览器之外,情况也是如此。
根据jquery文档 ,焦点选择器应“ 如果当前已焦点,则选择元素 ”。 由于没有提及浏览器焦点,因此我想知道这是否是预期的行为,还是应该将其报告为错误。
如果您想尝试这种行为,我创建了一个JsFiddle示例。 您将看到文本,当您将焦点从输入移开(在表单中,在控制台中或在其他应用程序中)时, $(":focus")
会如何反应。
看一下: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
,并且文档是否具有焦点也无关紧要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.