我想在整个文档中找到当前关注的元素。
我尝试使用jQuery 1.6引入的:focus
伪类:
$(document).find(":focus")
但$(document).find(":focus").length
始终返回0
答案 0 :(得分:11)
您应该可以使用document
的{{3}}属性:
var focus = $(document.activeElement);
如果你看一下activeElement
的jQuery文档,那就非常清楚了:
如果您正在寻找当前关注的元素,$( document.activeElement)将检索它而无需搜索 整个DOM树。
值得注意的是,如果当前没有任何元素具有焦点,activeElement
将引用body
。
答案 1 :(得分:0)
与其他伪类选择器(以“:”开头的那些)一样,它 建议先于:使用标记名称或其他名称进行聚焦 选择;否则,隐含通用选择器(“
*
”)。其他 单词,裸$(':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" ) );
});