現在フォーカスがある要素をどのように選択できますか?
JQueryには:focus
フィルターがないため、次のようなものを使用できます。
$('input:focus').someFunction();
それを行う最良の方法は、onFocusイベントのハンドラーをセットアップし、変数をフォーカスを持つ要素のIDに設定することです。
このようなもの:
var id;
$(":input").focus(function () {
id = this.id;
});
$(document.activeElement)
は、現在フォーカスされている要素を返し、疑似セレクター:focusを使用するよりも高速です。
alert($("*:focus").attr("id"));
JQueryを使用します。
要素のIDがフォーカスされていることを警告します。
役に立つことを願っています。
やってみました
$.extend($.expr[':'], {
focused: function(elem) { return elem.hasFocus; }
});
alert($('input :focused').length);
JQueryを使用する場合、 このようなセレクター を記述できます。
_$.expr[':'].focus = function(a){ return (a == document.activeElement); }
_
その後、現在フォーカスされている要素を選択できます:$(":focus")
フォームコントロールだけがフォーカスできるわけではありません。 tabindexを持つHTML要素は、最新のブラウザーでフォーカスできます。
現在のjQueryバージョン(1.7)のドキュメントの例から抜粋:
$(elem).is(":focus");
要素をチェックするためにフォーカスがあるかどうか。
if ($("...").is(":focus")) {
...
}
以下にCoffeeScriptバージョンを示します。 jmanrubiaのコードに基づいて:
$.expr[':'].focus = (a) -> a is document.activeElement
また、次のように呼び出すこともできます$(".:focus")