之一內的輸入獲得焦點時,由 .hover() 方法建立的邊框會在滑鼠移開時消失。
為了解決此問題,我們試圖確定是否有任何輸入獲得焦點滑鼠移出。由於 jQuery 缺少 :focus 選擇器,因此需要替代方法。
jQuery 1.6 以上
jQuery 1.6 包含一個 :focus 選擇器,無需自訂實作。只需使用 $("..").is(":focus") 來檢查聚焦輸入。
jQuery 1.5 及以下
對於早期的 jQuery 版本,建議定義一個自訂 :focus 選擇器。這可以透過以下方式實現:
jQuery.expr[':'].focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
登入後複製
這確保只有表單控制項和超連結被視為焦點。
或者,您可以使用:
if ($("...").is(":focus")) { ... }
登入後複製
或:
$("input:focus").doStuff();
登入後複製
所有jQuery版本
要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>要確定🎜>哪個元素具有焦點,無論jQuery版本如何,請使用:
$(document.activeElement)
登入後複製
檢查是否缺少:focus 選擇器
如果您不確定jQuery 版本,可以添加:focus 選擇器手動:
(function ( $ ) {
var filters = $.expr[":"];
if ( !filters.focus ) {
filters.focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
}
})( jQuery );
登入後複製
透過採用這些技術,您可以維持所需的邊框行為,同時適應瀏覽器特定的限制。