2017-01-09 23 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更改)。 –

回答

相關問題