Как выбрать элемент, который сфокусирован на нем, с помощью jQuery - PullRequest
64 голосов
/ 05 февраля 2009

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

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

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

Ответы [ 8 ]

153 голосов
/ 26 марта 2012

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

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

123 голосов
/ 14 января 2010
alert($("*:focus").attr("id"));

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

Оповещение о том, что элемент находится в фокусе.

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

32 голосов
/ 05 февраля 2009

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

как то так:

var id;

$(":input").focus(function () {
     id = this.id;
});
5 голосов
/ 24 ноября 2010

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

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

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

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

5 голосов
/ 05 февраля 2009

Вы пробовали

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

alert($('input :focused').length);
4 голосов
/ 14 ноября 2011

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

$(elem).is(":focus");
1 голос
/ 09 мая 2012

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

if ($("...").is(":focus")) {
  ...
}
0 голосов
/ 22 августа 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...