Почему обработчик событий «Focusin» не вызывается?
-
27-09-2019 - |
Вопрос
Почему в то следующий код то focusin
Обработчик событий не вызывается?
HTML:
<div id='wrapper'></div>
<div id='button'>Click Here</div>
<div id='output'></div>
JS:
$(function() {
$('input').live('focusin', function() {
$('#output').html('focusin'); // Why this not happens ?
});
$('#button').click(function() {
$('#button').hide();
build_inputs();
});
});
function build_inputs() {
var html = "<input type='text' /> \
<br /> \
<input type='text' />";
$('#wrapper').append(html);
$('#wrapper').fadeIn(500, function() {
$('input:first').focus();
});
}
CSS:
#wrapper {
display: none;
background: #aaa;
width: 170px;
padding: 20px;
}
Решение
Почему-то я не уверен почему, .focus()
не вызывает focusin
мероприятие.
Вы можете повторить это поведение, изменив линию фокусировки, чтобы добавить .trigger('focusin')
.
Так что ваш код Fadein становится:
$('#wrapper').fadeIn(500, function() {
$('input:first').focus().trigger('focusin');
});
Вы можете проверить это здесь: http://jsfiddle.net/yt7jd/
Редактировать: как упоминается Джейсон, вы также можете позвонить .focusin()
метод вместо .trigger('focusin')
.
Редактировать 2: кажется, что это ошибка в 1.4.3. Он был зарегистрирован с командой jQuery для фиксации: http://bugs.jquery.com/ticket/7340.
Не связан с StackOverflow