web-dev-qa-db-ja.com

javascriptを使用して要素に子がフォーカスされているかどうかを確認するにはどうすればよいですか?

コードからすべてのjQueryを削除しようとしています。今まで使った

if($(selector).find(':focus').length === 0){
  //focus is outside of my element
}else{
  //focus is inside my element
}

焦点を区別するために私の要素の1つの中にあります。 jQueryを使用しない方法を教えてください。

6

Node.contains このためのネイティブDOMメソッド。

el.contains(document.activeElement);

activeElementelの子孫であるかどうかを確認します。チェックする要素が複数ある場合は、some関数を使用して反復できます。

8
Northern

CSSを使用 _:focus_querySelectorAll()の擬似クラス

_setTimeout(function(){
  if (document.querySelectorAll("div :focus").length === 0)
    console.log("not focused");
  else
    console.log("focused")
}, 2000);_
_<div id="div">
  <input type="text">
</div>_
4
Mohammad

選択した要素を取得するには、次を使用できます。

let activeElement = document.activeElement

特定の要素を確認するには:

let elem = document.getElementById('someId');

let isFocused = (document.activeElement === elem);
0
omri_saadon