Why in the following code the focusin
event handler isn't called ?
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;
}
For some reason, I'm not positive why,
.focus()
doesn't trigger thefocusin
event.You can replicate this behaviour by changing the focus line to add
.trigger('focusin')
.so your fadeIn code becomes:
You can test it here: http://jsfiddle.net/yt7Jd/
EDIT: As Jason mentioned, you can also call the
.focusin()
method instead of the.trigger('focusin')
.EDIT 2: It appears to be a bug in 1.4.3. It has been logged with the jQuery team for fixing: http://bugs.jquery.com/ticket/7340