2017-01-09 72 views
0

假设我有两个jQuery在页面上动态放置的文本字段。
此外,我还在这些字段中添加了focusfocusout事件侦听器。焦点和聚焦事件顺序从一个字段切换到另一个字段

页面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知识。

+1

你加的console.log的事件,看看什么样的顺序事件火? – epascarello

+0

我会这样做,但我不确定结果是否显示同步或异步行为。我的意思是,它也可以依赖于浏览器(只是意见我不是专家)。所以我在这里问了一些比我更了解JS内部结构的人的确切答案。 –

+1

事件循环本身是同步的,但事件可能会异步触发(如ajax readstate更改)。 –

回答

相关问题