Javascript Jquery焦点(in | out)以奇怪的顺序运行
问题是,当关注一个Javascript Jquery焦点(in | out)以奇怪的顺序运行,javascript,jquery,Javascript,Jquery,问题是,当关注一个#input1时,我会尝试关注#input2 通过运行 $('#input2').focus(); 首先运行#input2的focusin事件,然后运行#input1的focusout 为什么会发生这种情况,为什么不先运行focusout 请看一个例子 首先输入4个符号 更新:顺便说一句,出于性能原因,我使用了委托绑定而不是直接绑定,可能会有很多输入字段…有一种称为事件层次结构的东西。它决定事件的触发顺序 如果你的案子需要先发一枪,记下这一点很重要 更多信息请参见此部分。这可
#input1
时,我会尝试关注#input2
通过运行
$('#input2').focus();
首先运行#input2的focusin
事件,然后运行#input1的focusout
为什么会发生这种情况,为什么不先运行focusout
请看一个例子
首先输入4个符号
更新:顺便说一句,出于性能原因,我使用了委托绑定而不是直接绑定,可能会有很多输入字段…有一种称为事件层次结构的东西。它决定事件的触发顺序
如果你的案子需要先发一枪,记下这一点很重要
更多信息请参见此部分。这可能是jQuery的内部机制,甚至是浏览器中Javascript引擎的“更糟”机制。如果顺序很重要,可以在对焦之前使用模糊方法
(函数(){
$('#cont')。关于('keyup','input',函数(事件){
var输入=$(此);
if(input.val().length==4){
input.blur();
$('#input2').focus();
}
});
$('#cont')。关于('focus','input',function(){
$(“#事件”).append(“+this.id+”
”)的focusin;
});
$('#cont')。关于('blur','input',function(){
$('#events').append('focusout'+this.id+'
');
});
})();
当您选择另一个元素并取消聚焦时,导航器可能会检查聚焦的元素。我看不出问题所在。当我在#input1中并点击#input2时,它会显示“focusout of input1,focusin of input2”,所以我不知道你的意思…你不应该点击#input2,点击#input1并键入4个符号来触发焦点()
(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>');
});
})();