【发布时间】:2012-02-27 06:06:54
【问题描述】:
我想在整个文档中找到当前焦点所在的元素。
我尝试使用 jQuery 1.6 引入的 :focus 伪类:
$(document).find(":focus")
但是$(document).find(":focus").length 总是返回0
【问题讨论】:
标签: javascript jquery focus pseudo-class
我想在整个文档中找到当前焦点所在的元素。
我尝试使用 jQuery 1.6 引入的 :focus 伪类:
$(document).find(":focus")
但是$(document).find(":focus").length 总是返回0
【问题讨论】:
标签: javascript jquery focus pseudo-class
与其他伪类选择器(以“:”开头的选择器)一样,它 建议在 :focus 前面加上标签名称或其他名称 选择器;否则,隐含通用选择器 ("
*")。其他 也就是说,裸露的$(':focus')等价于$('*:focus')。
如果您想要替代$( document.activeElement ) 来检索当前具有焦点的元素,您可以使用:
$(document).delegate( "*", "focus blur", function( event ) {
var elem = $( this );
// here use elem.is( ":focus" ) which is your element that has focus
//for example :
elem.toggleClass( "focused", elem.is( ":focus" ) );
});
【讨论】:
您应该可以使用document 的activeElement 属性:
var focus = $(document.activeElement);
如果您查看:focus 的 jQuery 文档,就会非常清楚:
如果你正在寻找当前聚焦的元素,$( document.activeElement ) 将检索它而无需搜索 整个 DOM 树。
值得注意的是,如果当前没有元素具有焦点,activeElement 将引用body。
【讨论】: