1. ホーム
  2. ジャバスクリプト

[解決済み】jQueryでフォーカスされた要素を取得する方法は?

2022-03-25 23:14:05

質問

jQueryを使って、キャレット(カーソル)のフォーカスがあるinput要素を取得するにはどうすればよいですか?

言い換えれば、ある入力がキャレットのフォーカスを持っているかどうかを判断するにはどうすればよいのでしょうか?

解決方法は?

// Get the focused element:
var $focused = $(':focus');

// No jQuery:
var focused = document.activeElement;

// Does the element have focus:
var hasFocus = $('foo').is(':focus');

// No jQuery:
elem === elem.ownerDocument.activeElement;

を引用して、どちらを使うべきでしょうか? jQueryドキュメント :

他の擬似クラスセレクタ(":"で始まるもの)と同様に、タグ名または他のセレクタで :focus を先行させることが推奨されます; さもなければ、ユニバーサルセレクタ ("*") が暗黙に使用されます。言い換えれば、素の $(':focus') と同じです。 $('*:focus') . 現在フォーカスされている要素を探している場合、$( document.activeElement )はDOMツリー全体を検索することなく、その要素を取得することができます。

という答えが返ってきます。

document.activeElement

そして、要素をラップするjQueryオブジェクトが必要な場合。

$(document.activeElement)