问题是,当专注于一个时,我尝试
通过运行#input1
来专注于它#input2
$('#input2').focus();
首先运行然后的focusin
事件#input2
focusout
#input1
为什么会发生这种情况,为什么不focusout
先运行?
请参阅示例http://jsfiddle.net/zZZsD/3/ 首先输入 4 个符号
更新:顺便说一句,出于性能原因,我使用委托绑定而不是直接绑定,可能会有很多输入字段......
问题是,当专注于一个时,我尝试
通过运行#input1
来专注于它#input2
$('#input2').focus();
首先运行然后的focusin
事件#input2
focusout
#input1
为什么会发生这种情况,为什么不focusout
先运行?
请参阅示例http://jsfiddle.net/zZZsD/3/ 首先输入 4 个符号
更新:顺便说一句,出于性能原因,我使用委托绑定而不是直接绑定,可能会有很多输入字段......
这可能是浏览器中 Javascript 引擎的 jQuery 的内部机制,甚至是“更糟糕的”。如果顺序很重要,可以在focus之前使用blur方法。
(function () {
$('#cont').on('keyup', 'input', function (event) {
var input = $(this);
if (input.val().length == 4) {
input.blur();
$('#input2').focus();
}
});
$('#cont').on('focus', 'input', function () {
$('#events').append('focusin of ' + this.id + ' <br>');
});
$('#cont').on('blur', 'input', function () {
$('#events').append('focusout of ' + this.id + ' <br>');
});
})();
当您选择另一个元素并取消焦点时,导航器可能会检查焦点元素。