2012-05-14 28 views
8

幾分鐘前,我回答了這個問題:
What is the difference between focusin/focusout vs focus/blur in jQuery?爲什麼event.bubbles對於「focusin」和「focusout」是錯誤的?

答案是:

簡短的回答:focusin   氣泡,focus沒有。
              focusout氣泡,blur 纔不是。

我測試了它,這是真的,但我遇到了一個奇怪的事情,而試圖建立一個DEMO

$('#test').on('focusin focusout focus blur change', function(e) { 
    console.log(e.type + 'event bubles? : ' + e.bubbles); 
});​ 

focusinfocusout給我e.bubbles == false

是它的jQuery的錯誤或我在這裏錯過了明顯嗎?

+0

Chrome 18中的假/假(如果你想要一些瀏覽器筆記...) – jmar777

回答

4

聽起來像jQuery中的錯誤。您是否在本機支持focusinfocusout的瀏覽器上測試過此功能? (例如,IE?)因爲如果沒有,您正在測試jQuery模擬支持的標誌。

我已經劃掉了上面的「聲音就像一個bug」,因爲jQuery並沒有聲稱在文檔中規範了bubbles屬性。因此,它不能保證它,它不必在仿真事件上支持它。 (請注意,如果我在IE7上運行演示程序,我會得到undefined,因爲IE7不支持DOM3 Events bubbles屬性。)仍然是問題,但可能不是問題。 :-)


更新

響應上the jQuery ticket

文檔沒有權利要求正常化Event.bubbles屬性。您可以在event.originalEvent中查找它,但無論提供的平臺是什麼,都是非標準化的。

所以我上面的猜測是正確的。這不是錯誤,因爲他們不聲稱將其歸一化。 :-)

+1

用'chrome'測試 – gdoron

+0

哇我在jQuery中發現了一個錯誤,是否有徽章?我要meta ... :) – gdoron

+0

@gdoron:吹牛的權利。 :-) –

相關問題