1

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

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

当我这样做时:

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

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

4

1 回答 1

1

实际上,当用户单击一个元素时,事件会携带鼠标位置pageX/pageYclientX/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事件中,完全是两个不同的对象。

于 2013-10-10T01:03:56.387 回答