[解決済み] 入力にフォーカスがあるかどうかをテストするためにjQueryを使用する
質問
私が構築しているサイトのトップページに、いくつかの
<div>
は、CSS
:hover
擬似クラスを使って、マウスを乗せたときにボーダーを追加することができます。擬似クラスの1つである
<div>
には
<form>
これは、jQueryを使用して、その中の入力にフォーカスがある場合に境界線を維持します。これは、IE6 が
:hover
以外の要素で
<a>
s. そこで、このブラウザに限っては、jQueryを使ってCSSを模倣しています。
:hover
を使用しています。
$(#element).hover()
メソッドを使用します。唯一の問題は、jQueryがフォームの
focus()
と
hover()
入力にフォーカスがあり、ユーザーがマウスを出し入れすると、境界線が消えます。
私は、何らかの条件を使ってこの動作を止めることができないかと考えていました。例えば、マウスアウト時に、いずれかの入力にフォーカスがあるかどうかをテストすれば、ボーダーが消えるのを止めることができます。AFAIKでは
:focus
のセレクタを使用しているため、これを実現する方法がわかりません。何かアイデアはありますか?
解決方法は?
jQuery 1.6+
jQueryに
:focus
セレクタを追加する必要はありません。単に
$("..").is(":focus")
jQuery 1.5以下
編集する 時代の変化とともに、フォーカスをテストするためのより良い方法が見つかり、新しいお気に入りは Ben Alman氏によるこのgist :
jQuery.expr[':'].focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
Mathias Bynensより引用 こちら :
なお
(elem.type || elem.href)
テストは、body のような誤検出を除外するために追加されました。この方法で、フォームコントロールとハイパーリンク以外のすべての要素をフィルタリングするようにします。
新しいセレクタを定義しているのですね。参照 プラグイン/オーサリング . すると、できるようになります。
if ($("...").is(":focus")) {
...
}
または
$("input:focus").doStuff();
任意のjQuery
どの要素にフォーカスが当たっているかを把握したいだけなら
$(document.activeElement)
バージョンが1.6以下になるかどうかがわからない場合は、1.6以下の場合は
:focus
セレクタがない場合は
(function ( $ ) {
var filters = $.expr[":"];
if ( !filters.focus ) {
filters.focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
}
})( jQuery );
関連
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] .css()関数で追加したスタイルを削除するにはどうしたらいいですか?
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3レスポンシブ対応のためのsetup+ref+reactive
-
要素ツリー制御によるvueTreeテーブル
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
jQueryのコピーオブジェクトの説明
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
[解決済み】jQueryでフォーカスされた要素を取得する方法は?
-
[解決済み] Javascript/jQueryで入力にフォーカスが当たっているかどうかを検出する方法 [重複]。