Javascript focus和focusout事件顺序从一个字段切换到另一个字段
假设我有两个文本字段,jQuery动态地将它们放在页面上。Javascript focus和focusout事件顺序从一个字段切换到另一个字段,javascript,jquery,events,Javascript,Jquery,Events,假设我有两个文本字段,jQuery动态地将它们放在页面上。 我还在这些字段中添加了focus和focusout事件侦听器 因此,在页面上添加元素后,HTML如下所示: <div class="outer"> <input name="a" type="text" class="inner" /> <input name="b" type="text" class="inner" /> </div> $('.outer').on('
我还在这些字段中添加了
focus
和focusout
事件侦听器
因此,在页面上添加元素后,HTML如下所示:
<div class="outer">
<input name="a" type="text" class="inner" />
<input name="b" type="text" class="inner" />
</div>
$('.outer').on('focus', '.inner', function (e) {
// Some action
});
$('.outer').on('focusout', '.inner', function (e) {
// Some action
});
因此,这些事件监听器被添加到具有classinternal
的两个文本字段中
当我将第一个文本字段置于焦点位置,然后紧接着将第二个字段置于焦点位置时,将触发的事件有:focus
在第一个字段上,focusout
也在第一个字段上,focus
在第二个字段上
我的问题是,这些事件将按什么顺序触发
以下哪项是正确的,如果有的话
(它是同步的吗?)
A:Firstfocus
在First字段激发,JavaScript等待它完成,而focus
在second字段激发,JavaScript等待它完成,而focusout
在First字段激发
B:Firstfocus
在First字段上触发,JavaScript等待它完成,而focusout
在First字段上触发,JavaScript等待它完成,而focus
在second字段上触发
(或者它是异步的?)
C:Firstfocus
在First字段上触发,JavaScript不会等待它完成,在second字段上触发focus
后,JavaScript不会等待它完成,在第一个字段上触发focusout
后立即启动
D:Firstfocus
在First字段上触发,JavaScript不等待它完成,在First字段上触发focusout
后,JavaScript不等待它完成,在第二个字段上触发focus
后立即启动
很明显,第一个聚焦元素,在本例中是第一个文本字段,总是首先激发。让我困惑的是,在第二个文本字段对焦后(不点击,只从第一个文本字段到第二个文本字段直接点击),
focus
(在第二个字段上)或focusout
(在第一个字段上)首先触发哪个事件
当两个事件侦听器侦听具有相同类的两个元素时,它们是否同步激发(下一个事件仅在一个事件完成后激发)
或者它们是异步触发的
我真的需要一些JavaScript的内部知识。当一个事件被触发时,它被推送到事件循环,并按触发顺序被触发 因为Javascript有一个单线程事件池,所以这些事件总是按照触发顺序一次触发一个
有关更多信息,请参阅:是否已将console.log添加到事件中,并查看事件的触发顺序?我将这样做,但我不确定结果是否显示同步或异步行为。我的想法是,它也可能依赖于浏览器(只是我认为我不是专家)。因此,我在这里要求比我更了解JS内部结构的人给出明确的答案。事件循环本身是同步的,但事件可能是异步触发的(就像ajax readstate更改)。因此,在阅读了此处链接的文章和此处的答案以及关于我的问题的答案后,我的结论是B:是答案。我很抱歉,对吗?