2010-04-02 22 views

回答

27

如果函數作爲第一個參數傳遞,或者觸發不帶參數的附加事件處理程序,則jQuery包裹元素上的.focus()方法將綁定到onfocus事件。

我不確定你爲什麼試圖做你想做的事情,但是如果你想模糊當前活動的元素,不管它是什麼元素,你可以使用:

if ("activeElement" in document) 
    document.activeElement.blur(); 

雖然這樣做不建議,因爲這樣做會重置Tab鍵順序並可能會干擾鍵盤導航用戶。

+2

最好先在if('activeElement'in document)'中放入一張支票,因爲它在所有瀏覽器中都不受支持。 – bobince 2010-04-02 22:24:49

+0

@bobince:將其添加爲預防措施。最新版本的Firefox,Opera,WebKit和IE 6到8都支持'activeElement',它也是HTML5規範的一部分,所以希望它能得到廣泛的支持。 – 2010-04-02 22:33:21

1

$().method()激發與該方法關聯的聽衆。如果您需要在dom元素上調用函數,請爲jQuery對象編制索引。

$(document)[0].focus() 

雖然你爲什麼不直接使用document.focus可能是值得回答的問題。