Без учета производительности я всегда жестко возвращаю объект jquery, возвращаемый $(":focus")
, эквивалентен $(document.activeElement)
.JQuery: фокус, когда браузер не сфокусирован
Однако, если вы входите в отладчик браузера и оцениваете $(":focus")
, вы не получите никакого элемента, а $(document.activeElement)
по-прежнему будет возвращать сфокусированный элемент. Я думал о какой-то проблеме эффекта наблюдателя, но то же самое верно, если вы устанавливаете фокус вне браузера.
Согласно jquery documentation, селектор фокусировки должен «Выбирает элемент, если он в данный момент сфокусирован». Поскольку нет упоминания о фокусе браузера, мне было интересно, было ли это ожидаемое поведение или если оно должно быть сообщено как ошибка.
Если вы хотите попробовать это поведение, я создал пример JsFiddle. Вы увидите текст, как реагирует $(":focus")
, когда вы будете фокусироваться от ввода (в форме, на консоли или в другом приложении).
Где вы находите это? –
в [исходном коде sizzle] (https://github.com/jquery/jquery/blob/master/external/sizzle/dist/sizzle.js) – billyonecan
Я только что обновил пример скрипки, чтобы быть более конкретным о фокусе –