为什么不调用“focusin”事件处理程序?

时间:2010-10-28 05:12:11

标签: javascript jquery html javascript-events focusin

为什么following code没有调用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;
}

1 个答案:

答案 0 :(得分:1)

由于某些原因,我不肯定为什么,.focus()不会触发focusin事件。

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

所以你的fadeIn代码变为:

$('#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