选择当前关注的元素

时间:2012-02-05 11:05:55

标签: javascript jquery focus pseudo-class

我想在整个文档中找到当前关注的元素。 我尝试使用jQuery 1.6引入的:focus伪类:

$(document).find(":focus")

$(document).find(":focus").length始终返回0

2 个答案:

答案 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" ) );
});