#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 получает фокус, когда входные данные теряют его.