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

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

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

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

8 ответов

Решение

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

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

var id;

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

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

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

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

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

Это предупредит идентификатор элемента, который находится в фокусе.

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

Ты пытался

$.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):

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

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

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

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

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

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

Другие вопросы по тегам