2012-02-05 175 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")); 
});