私はこの例を試してみたいですが、動作しません。どうして ?jqueryを使用してページ上でフォーカス要素を見つける方法は?
<div id="test"></div>
<script>
$('#test').focus();
alert($("*:focus").attr("id"))
</script>
私はこの例を試してみたいですが、動作しません。どうして ?jqueryを使用してページ上でフォーカス要素を見つける方法は?
<div id="test"></div>
<script>
$('#test').focus();
alert($("*:focus").attr("id"))
</script>
注などの要素の限られたセットに暗黙的に適用可能です。あなたはそれらの要素がfocussableにするために、それらにtabindex
属性を追加する必要があります。
<div id="test" tabindex="0"></div>
<script>
$('#test').focus();
alert($("*:focus").attr("id"))
</script>
tabindex
属性が適用されると、元のコードが動作します。 this working exampleを参照してください。
平易なJavaScriptでは、document.activeElement
はフォーカスされた要素がある場合はそれを返します。また、アクティブであるが、フォーカスされていない要素を返すこともできます。それを処理するための最良の方法は、要素がフォーカスされているかどうかを確認することです。
function getFocussedElement() {
var el;
if ((el = document.activeElement) && el != document.body)
return el;
else
return null;
}
それは、このアプローチは、セレクタで問い合わせるよりmuch fasterなければならないことを言及する価値があります。 activeElement
は標準の一部ではありませんが、すべての主要なブラウザでサポートされています。
ブラウザによっては、divはフォーカスを受け取れません。それを入力に変更して、あなたは行こうとします。
<input id="test"></input >
<script>
$('#test').focus();
alert($("*:focus").attr("id"))
</script>
this answerによると、それはすべてのブラウザによって異なります。
我々が持っている唯一の標準がフォーカス()メソッドを持っている 唯一の要素であるそれによれば、DOMレベル2 HTMLですHTMLInputElement、 HTMLSelectElement、HTMLTextAreaElement、およびHTMLAnchorElement。この は、特にHTMLButtonElementとHTMLAreaElementを省略しています。
@lonesomedayが言ったように、あなたがここにdiv
に焦点を当てることができない入力要素を持つ例を示します代わりにhttp://jsfiddle.net/xsp83/
これで十分でしょうか?
$("input").focus(function(){
var f = $(this).attr("id");
console.log(f);
});
新しい質問がある場合は、[Ask Question](http://stackoverflow.com/質問/質問)ボタンをクリックします。コンテキストを提供する場合は、この質問へのリンクを含めてください。 –
@SamuelRossille Huh?これは一年前の答えであり、質問ではありません。 ;) – Nix
私はフォーカス()docsから、div
要素がフォーカスを得ることができるようになりますとは思わない - それがフォーカスを取得したときに
フォーカスイベントが要素に送られます。このイベント は、他のすべての要素がデフォルトで集束することができない、上述したように、このような形態 要素(
<input>
、<select>
、等)
なぜ、div要素に焦点を当てることができると思いますか? – lonesomeday
それは私のために働いています[js fidle](http://jsfiddle.net/gchoken/Xzp56/) – Gowri