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

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

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

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

Ответ 1

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

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

var id;

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

Ответ 2

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

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

Ответ 3

alert($("*:focus").attr("id"));

Я использую jQuery.

Он будет предупреждать, что идентификатор элемента фокусируется.

Я надеюсь, что это будет полезно для вас.

Ответ 4

Вы пробовали

$.extend($.expr[':'], {
    focused: function(elem) { return elem.hasFocus; }
});

alert($('input :focused').length);

Ответ 5

Если вы используете JQuery, вы можете записать селектор следующим образом:

$.expr[':'].focus = function(a){ return (a == document.activeElement); }

Затем вы можете выбрать элемент, сфокусированный в данный момент: $(":focus")

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

Ответ 6

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

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

Ответ 7

Для элемента с контролем есть фокус или нет.

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

Ответ 8

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

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

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