当我这样做时,事件对象是不同的:
$('section#top10 ul#periodes li').click(function (e) {
当我这样做时:
$('section#top10 ul#periodes li').trigger('click') {
我知道触发函数会触发第一个函数,但是“e”参数与这两种方法不同。使用第一种方法我可以访问 srcElement,但使用触发器的对象属性不一样。我想知道为什么调用同一个函数时两个参数不同。
当我这样做时,事件对象是不同的:
$('section#top10 ul#periodes li').click(function (e) {
当我这样做时:
$('section#top10 ul#periodes li').trigger('click') {
我知道触发函数会触发第一个函数,但是“e”参数与这两种方法不同。使用第一种方法我可以访问 srcElement,但使用触发器的对象属性不一样。我想知道为什么调用同一个函数时两个参数不同。
实际上,当用户单击一个元素时,事件会携带鼠标位置pageX/pageY
,clientX/clientY
但是使用触发器以编程方式触发事件,不会有真正的鼠标位置,因为click
事件在没有鼠标交互的情况下触发,这是一个很大的区别,至少我能想到。这就是为什么e/event
在两种情况下对象都不同的原因,这是有道理的,IMO。
更新 :
换句话说,它不是真正的点击事件,而是对该事件的模拟,在这种情况下,它是量身定制的和平,例如,这是initMouseEvent
(带有示例和在MDN上)的原型,它与createEvent
object.initMouseEvent (eventName, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);
这用于在 vanilla 中模拟鼠标事件JavaScript
(它可能在不同的浏览器中有所不同),也请查看this,因此如果jQuery
它是(由创建的事件对象trigger
)一个定制对象,jQuery
在使用时为跨浏览器支持而构建trigger
,它与在真实click
事件中,完全是两个不同的对象。