当我这样做时,事件对象是不同的:
$('section#top10 ul#periodes li').click(function (e) {
当我这样做时:
$('section#top10 ul#periodes li').trigger('click') {
我知道触发函数会触发第一个函数,但是“e”参数与这两种方法不同。使用第一种方法,我可以访问 srcElement,但使用触发器时,对象属性不一样。我想知道为什么调用同一个函数时两个参数不同。
最佳答案
实际上,当用户单击某个元素时,该事件会携带鼠标位置,例如 pageX/pageY
和 clientX/clientY
但使用触发器以编程方式触发该事件,则会出现没有真正的鼠标位置,因为 click
事件在没有鼠标交互的情况下触发,这是一个很大的区别,至少我能想到。这就是为什么 e/event
对象在这两种情况下都不同,而且在我看来这是有道理的。
更新:
换句话说,这不是一个真正的点击事件,而是对该事件的模拟,在这种情况下,它是一个定制的和平,例如,这是 initMouseEvent
的原型(prototype)( with example 和MDN 上),与 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/