Как выбрать элемент, который имеет фокус на нем с помощью jQuery

Как вы можете выбрать элемент, который имеет текущий фокус?

нет :focus фильтр в jQuery, поэтому мы можем использовать что-то вроде этого:

$('input:focus').someFunction();

8 ответов


действительно лучший способ сделать это-настроить обработчик для события onFocus, а затем установить переменную в ID элемента, который имеет фокус.

что-то вроде этого:

var id;

$(":input").focus(function () {
     id = this.id;
});

$(document.activeElement) возвращает текущий элемент и быстрее, чем с помощью псевдо-селектора :фокус.

источник: http://api.jquery.com/focus-selector/


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")

не только элементы управления формы могут иметь фокус. Любой html-элемент с tabindex можно сфокусировать в современных браузерах.


поднято из примеров для текущей версии jQuery (1.7) docs:

$(elem).is(":focus");

для проверки элемент имеет фокус или нет.

if ($("...").is(":focus")) {
  ...
}

вот его версия CoffeeScript. На основе кода jmanrubia:

$.expr[':'].focus = (a) -> a is document.activeElement

вы бы также назвали это так $(".:focus")