javascript - 为什么单击事件和触发单击的事件对象不同?

标签 javascript jquery

当我这样做时,事件对象是不同的:

$('section#top10 ul#periodes li').click(function (e) {

当我这样做时:

$('section#top10 ul#periodes li').trigger('click') {

我知道触发函数会触发第一个函数,但是“e”参数与这两种方法不同。使用第一种方法,我可以访问 srcElement,但使用触发器时,对象属性不一样。我想知道为什么调用同一个函数时两个参数不同。

最佳答案

实际上,当用户单击某个元素时,该事件会携带鼠标位置,例如 pageX/pageYclientX/clientY 但使用触发器以编程方式触发该事件,则会出现没有真正的鼠标位置,因为 click 事件在没有鼠标交互的情况下触发,这是一个很大的区别,至少我能想到。这就是为什么 e/event 对象在这两种情况下都不同,而且在我看来这是有道理的。

更新:

换句话说,这不是一个真正的点击事件,而是对该事件的模拟,在这种情况下,它是一个定制的和平,例如,这是 initMouseEvent 的原型(prototype)( with exampleMDN 上),与 createEvent

一起使用
object.initMouseEvent (eventName, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);

这用于在普通 JavaScript 中模拟鼠标事件(在不同的浏览器中可能会有所不同),另请参阅 this ,因此对于 jQuery 来说,它是(由 trigger 创建的事件对象)一个定制的对象,jQuery 在使用 时为跨浏览器支持而构建触发器和真实的click事件中的不一样,完全是两个不同的对象。

关于javascript - 为什么单击事件和触发单击的事件对象不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285142/

相关文章:

javascript - 从对象数组中获取数据

javascript - 部分叠加在另一个上

javascript - 如何强制运行 swf 文件,而不是下载

php - Bootstrap 导航栏下拉菜单仅在一页上不起作用

javascript - 更新谷歌地图标记而不重新加载 map 和闪烁

javascript - 使用 AngularJS 创建一个棋盘

javascript 通过其他 javascript 对象的一个​​对象方法

javascript - 上传前如何使用 JavaScript 检查文件 MIME 类型?

javascript - Jquery 每个函数都以 div 的子代为目标

javascript - Instagram Feed 光滑 slider