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