假設我有兩個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更改)。 –