1

为什么在下面的代码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;
}
4

1 回答 1

2

出于某种原因,我不确定为什么.focus()不会触发focusin事件。

您可以通过将焦点线更改为 add 来复制此行为.trigger('focusin')

所以你的淡入淡出代码变成:

$('#wrapper').fadeIn(500, function() {
    $('input:first').focus().trigger('focusin');
});

你可以在这里测试它:http: //jsfiddle.net/yt7Jd/

编辑:正如 Jason 提到的,您也可以调用该.focusin()方法而不是.trigger('focusin').

编辑 2:这似乎是 1.4.3 中的一个错误。它已与 jQuery 团队一起记录以进行修复:http ://bugs.jquery.com/ticket/7340

于 2010-10-28T05:22:56.770 回答