2011-10-19 13 views

答えて

7

注などの要素の限られたセットに暗黙的に適用可能です。あなたはそれらの要素が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は標準の一部ではありませんが、すべての主要なブラウザでサポートされています。

0

ブラウザによっては、divはフォーカスを受け取れません。それを入力に変更して、あなたは行こうとします。

<input id="test"></input > 
<script> 
    $('#test').focus(); 
    alert($("*:focus").attr("id")) 
</script> 

this answerによると、それはすべてのブラウザによって異なります。

我々が持っている唯一の標準がフォーカス()メソッドを持っている 唯一の要素であるそれによれば、DOMレベル2 HTMLですHTMLInputElement、 HTMLSelectElement、HTMLTextAreaElement、およびHTMLAnchorElement。この は、特にHTMLButtonElementとHTMLAreaElementを省略しています。

0

@lonesomedayが言ったように、あなたがここにdiv

に焦点を当てることができない入力要素を持つ例を示します代わりにhttp://jsfiddle.net/xsp83/

0

これで十分でしょうか?

$("input").focus(function(){ 
    var f = $(this).attr("id"); 
    console.log(f); 
}); 
+0

新しい質問がある場合は、[Ask Question](http://stackoverflow.com/質問/質問)ボタンをクリックします。コンテキストを提供する場合は、この質問へのリンクを含めてください。 –

+0

@SamuelRossille Huh?これは一年前の答えであり、質問ではありません。 ;) – Nix

0

私はフォーカス()docsから、div要素がフォーカスを得ることができるようになりますとは思わない - それがフォーカスを取得したときに

フォーカスイベントが要素に送られます。このイベント は、他のすべての要素がデフォルトで集束することができない、上述したように、このような形態 要素(<input><select>、等)

関連する問題