为什么'事件'变量,即使不作为参数传递也可用
Why is 'event' variable available even when not passed as a parameter?
我想知道为什么下面的代码在一些浏览器中工作?也就是说,即使没有参数的click()
函数,但event
变量存在,dosomething
方法是在事件触发对象上调用?
$(<selector>).click(function () {
$(event.target).<dosomething>
});
为什么'event'变量即使不作为参数传递也是可用的?
它不是可靠的。例如,该代码将在Firefox上失败。它不是, 用于在Firefox上失败。Microsoft使用了一个全局 event
变量。DOM2将其定义为处理程序的参数。Chrome决定给ms专用代码来点甜头,同时做这两件事。在很长一段时间内,Firefox没有。但是由于兼容性原因,global被标准化为遗留API (spec | MDN), Firefox在v63中添加了它,并将其简单地置于用户必须启用的标志之后,并且由于v66发布时它没有标记。
即使在该代码工作的浏览器上,也要注意event
将是一个原始事件对象,而不是jquery增强的对象。这意味着,例如,在IE8上你不能调用event.preventDefault
,因为IE8不提供该功能。如果您接受这个参数,jQuery就会这样做,因为jQuery提供了一个具有标准化特性的事件对象,即使浏览器没有这些特性。
相关文章:
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 将图标作为参数传递不会;t工作-谷歌地图
- 是否可以将一个元素还原为它's上一个位置,而不将该位置作为参数传递
- ng-repeat不能作为参数传递
- 在Angular Directive中传递函数作为参数不会;不起作用
- 如何在函数中传递不带引号的字符串作为参数
- 将函数作为 Javascript 中可能尚不存在的参数传递
- 为什么我不能将角度变量作为函数参数传递
- 不能将变量作为参数传递到 onClick 函数中
- 调用所有数组元素的函数,而不将项目作为参数传递
- 当函数作为参数传递时,Javascript函数提升不适用
- 将对象作为函数参数传递.不确定如何访问这些值
- .call()函数将函数作为参数而不是结果传递
- 传递一个原型's函数作为参数而不丢失'this'上下文
- 为什么'事件'变量,即使不作为参数传递也可用
- JS -如何传递函数作为参数(带参数)而不调用它
- 为什么count++作为参数传递时不起作用?
- 不能将时间作为参数传递给函数
- 如何为另一个函数声明变量,而不将其作为其他函数的参数传递
- Javascript,对象,用参数传递函数作为参数- angular, jquery概念基本误区