2012-02-05 127 views
4

我想在整个文档中找到当前焦点元素。 我尝试使用:focus伪类使用jQuery 1.6介绍:选择当前的焦点元素

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

$(document).find(":focus").length总是返回0

回答

11

您应该能够使用documentactiveElement属性:

var focus = $(document.activeElement); 

如果您查看:focus的jQuery文档,它使得这一点非常清晰:

如果您正在寻找当前的焦点元素,$( document.activeElement)将检索它,而不必搜索整个DOM树。

值得注意的是,如果当前没有焦点的元素,activeElement将引用body

+0

谢谢你,巧妙的解决办法。 – Valentino 2012-02-05 11:24:54

+0

没问题,很高兴我能帮忙:) – 2012-02-05 11:26:28

0

与其他伪类选择器(那些带有一个begin“:”),它 建议先于:焦点与标签名称或一些其它 选择器;否则,暗示通用选择器(“*”)。在其他 单词中,裸露的$(':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")); 
});