假设我有两个jQuery在页面上动态放置的文本字段。
此外,我还在这些字段中添加了focus
和focusout
事件侦听器。焦点和聚焦事件顺序从一个字段切换到另一个字段
页面HTML添加元素,因此后看起来是这样的:
<div class="outer">
<input name="a" type="text" class="inner" />
<input name="b" type="text" class="inner" />
</div>
jQuery代码看起来是这样的:
$('.outer').on('focus', '.inner', function (e) {
// Some action
});
$('.outer').on('focusout', '.inner', function (e) {
// Some action
});
所以这些事件侦听器是在这两个文本字段添加inner
类。
当我把第一个文本字段中的重点和比我放在焦点第二场后,将被触发的事件是:focus
的第一个字段,focusout
也是第一场和focus
第二场。
我的问题是,这些事件将以何种顺序被解雇?
以下哪项是真的?
(是否同步?)
答:首先focus
在第一场被激发,JavaScript的等待它完成,比focus
是在第二场发射,JavaScript的等待它完成,比focusout
被激发的第一个字段。
B:首先focus
是在第一场发射,JavaScript的等待它完成,比focusout
是在第一场发射,JavaScript的等待它完成,比focus
是在烧制秒字段。
(或者是异步的?)
C:首先focus
是在第一场发射,JavaScript不等待它完成,focus
是在第二场发射后立即,JavaScript不会等待它完成,focusout
之后立即被第一个字段解雇。
d:首先focus
是在第一场发射,JavaScript不等待它完成,focusout
是在第一场解雇后,JavaScript不等待它完成,立即focus
之后第二字段被解雇。
很明显,第一聚焦元素,在这种情况下,第一个文本字段,总是先发生。
什么困惑我的是,第二个文本框放在关注焦点,此前该事件首先被烧成(不点击左右只是直接点击从第一个文本字段到第二),focus
(第二场)或focusout
(第一领域)?
,并同步他们开枪,当两个事件侦听器监听与同一类的两个元素(下一个活动只有一个完成之前解雇后)?
或者它们被异步触发?
我真的需要一些关于这方面的JavaScript知识。
你加的console.log的事件,看看什么样的顺序事件火? – epascarello
我会这样做,但我不确定结果是否显示同步或异步行为。我的意思是,它也可以依赖于浏览器(只是意见我不是专家)。所以我在这里问了一些比我更了解JS内部结构的人的确切答案。 –
事件循环本身是同步的,但事件可能会异步触发(如ajax readstate更改)。 –