2015-10-16 76 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

相关问题