Фокусирует ли событие размытия jQuery другой элемент на странице?

#jquery #events #blur

#jquery #Мероприятия #размытие

Вопрос:

Я понимаю, что вызов событий jQuery $(selector).blur(); вызовет trigger и запустит обработчики событий размытия.

Дает ли это какой-либо другой элемент на странице, например document, body, focus?

Примечание.Хотя это кажется довольно простым, я не нашел подробностей в jQuery API или SO или Google.

Комментарии:

1. Смотрите мою правку. В IE все по-другому.

Ответ №1:

Я не думаю, что это фокусирует какой-либо другой элемент. Кажется, что это просто полностью отвлекает внимание (на самом деле, не в IE, см. Мою правку). Я подключил пример jsfiddle в следующих строках:

HTML

 <div id="test">
    <input id="test2" />
    <input id="test3" />
    <input id="test4" />
</div>
  

JavaScript

 $(function() {
    $('*').focus(function() {
        alert(this.id);
    });
    $('input').keypress(function(evt) {
        if (evt.which == '13') {
            $(this).blur();
            evt.preventDefault();
        }
    });
});
  

По сути, оно предупреждает, когда какой-либо элемент получает фокус, и когда вы нажимаете enter в любом из полей ввода, оно вызывает .blur() . В Opera ни один другой элемент не попадает в фокус, когда это происходит. В Firefox окно предупреждения отвлекает внимание от элемента, поэтому вам нужно использовать console.log() вместо alert() , но в остальном оно действует точно так же.

Редактировать
Я проверил это в IE, и кажется, что фокус изменен на элемент body. Если у вас есть это, alert(this); вместо alert(this.id); это говорит о том, что элемент body получает фокус, когда входные данные теряют его.