2015-10-16 75 views
5

我想知道爲什麼下面的代碼在某些瀏覽器中工作?即即使click()函數沒有參數,但event變量存在,並且dosomething方法在事件觸發器對象上被調用?即使沒有作爲參數傳遞,爲什麼'event'變量可用?

$(<selector>).click(function() { 
    $(event.target).<dosomething> 
}); 
+2

_global_'event'。嘗試控制檯 – Tushar

+0

中的「事件」,並不能解釋它爲什麼只在某些瀏覽器/版本中才起作用 –

+0

@SergeyPauk:這是一個微軟公司。 – Amadan

回答

15

爲什麼是「事件」變量可用,即使作爲一個參數沒有通過?

它不可靠。例如,該代碼將在Firefox上失敗。

微軟使用了一個全球event變量。 DOM2將其定義爲處理程序的參數。 Chrome決定將特定於MS的代碼放在骨頭上,然後執行這兩個操作。 Firefox沒有。

即使在代碼工作的瀏覽器上,請注意event將是一個原始事件對象,而不是jQuery增強的對象。這意味着,例如,在IE8上,您不能撥打event.preventDefault,因爲IE8不提供該功能。 jQuery會如果你接受了這個參數,因爲即使在缺少這些特性的瀏覽器上,jQuery也提供了一個具有標準化特性的事件對象。

+0

感謝您的信息:),不知道這一點 – Tushar

相關問題