jqueryを使用して要素にフォーカスを設定するときに問題があるようです。明らかに、要素に設定された:focuscssプロパティをトリガーしません。
たとえば、私のcssには次のものがあります。
div.item1:focus { border:2px solid red; }
私のjqueryには次のものがあります:
$("div.item1").focus();
フォーカスは設定されていますが、要素に赤い境界線は適用されていません。
div
:focus
要素はセレクターを使用しません.. CSS2仕様を参照してください
:focus 疑似クラスは、要素にフォーカスがある間適用されます (キーボード イベントまたはその他の形式のテキスト入力を受け入れます)。
あなたはこれを行うことができます:
.hoverclass { border:2px solid red; }
$("div.item").hover(function() {
$(this).addClass('hoverclass')
},function() {
$(this).removeClass('hoverclass')
});
focus()
フォーム要素とリンクでのみ使用でき、他のタイプの要素で使用しようとすると機能しません。
詳細については、focus() の jQuery ドキュメントを参照してください。
マニュアルから:
focus イベントは、要素がフォーカスを取得したときに送信されます。このイベントは、フォーム要素 ( 、 など) やリンク ( ) など、限られた一連の要素に暗黙的に適用さ
<input>
れ<select>
ます<a href>
。最近のブラウザ バージョンでは、要素の tabindex プロパティを明示的に設定することで、イベントを拡張してすべての要素タイプを含めることができます。要素は、Tab キーなどのキーボード コマンドを使用するか、要素をマウスでクリックすることによって、フォーカスを得ることができます。
例については、この回答を参照してください: https://stackoverflow.com/a/5966034/1013082
jQuery focus() ページに移動して、以下を参照してください。
focus イベントは、要素がフォーカスを取得したときに送信されます。このイベントは、フォーム要素 ( 、 など) やリンク ( ) など、限られた一連の要素に暗黙的に適用さ
<input>
れ<select>
ます<a href>
。最近のブラウザ バージョンでは、要素の tabindex プロパティを明示的に設定することで、イベントを拡張してすべての要素タイプを含めることができます。要素は、Tab キーなどのキーボード コマンドを使用するか、要素をマウスでクリックすることによって、フォーカスを得ることができます。
PPK のブラウザに焦点を当てた調査はこちら
すべてのブラウザーが tabindex テストに合格したようです。
これを行う必要があります:
$("div.item1").focus(function(){
$("div.item1").css("border","2px solid red");
});