我想知道为什么以下代码在某些浏览器中有效?即即使click()函数没有参数但是event变量存在并且dosomething在事件触发器对象上调用方法?
$(<selector>).click(function () {
$(event.target).<dosomething>
});
我想知道为什么以下代码在某些浏览器中有效?即即使click()函数没有参数但是event变量存在并且dosomething在事件触发器对象上调用方法?
$(<selector>).click(function () {
$(event.target).<dosomething>
});
为什么即使不作为参数传递,“事件”变量也可用?
它不是,可靠的。例如,该代码将在 Firefox 上失败。它不是并且曾经在 Firefox上失败。微软使用了一个全局 event变量。DOM2 将其定义为处理程序的参数。Chrome 决定将特定于 MS 的代码扔到一块骨头上,然后两者兼而有之。很长一段时间,Firefox 都没有。但是出于兼容性原因(规范| MDN),全局被标准化为遗留 API,并且 Firefox 在 v63 中添加了它,简单地将它放在用户必须启用的标志后面,并且因为 v66 附带它未标记。
即使在该代码工作的浏览器上,请注意这event将是一个原始事件对象,而不是 jQuery 增强的事件对象。这意味着,例如,在 IE8 上您不能调用,event.preventDefault因为 IE8 不提供该功能。如果您接受这个论点,jQuery 会这样做,因为 jQuery 提供了一个具有标准化功能的事件对象,即使在缺少这些功能的浏览器上也是如此。