在我的(javascript,jQuery)代码中,我使用了两种触发事件的方法
jQuery('body').trigger('crazy-trigger-event');
jQuery("body").get(0).dispatchEvent(new CustomEvent("crazy-dispatch-event"));
在这里的代码段中:
http://jsfiddle.net/jts9jhbt/3/
我已经使用jQuery .on()和DOM .addEventListener()方法注册了自定义事件。
然后我使用jQuery .trigger()和DOM .dispatchEvent()方法激活事件。
似乎使用.on()注册的侦听器接收双向触发的事件。
但是使用.addEventListener()注册的侦听器只接收使用.dispatchEvent()触发的事件。
我的用例是我混合了遗留代码和jQuery代码,使用.dispatchEvent()似乎是最安全的,因此它与两者兼容。
因此,我可以对代码进行一些更改,以便使用.addEventListener()注册的侦听器可以从.trigger()接收事件吗?
答案 0 :(得分:4)
否,你不能。
主要原因是jQuery需要跨多个浏览器工作......
“[...] jQuery的事件系统是DOM事件系统顶层的一层。”
尽管存在异常,但由于{{1>}方法缺少,jQuery无法知道浏览器当前支持哪些事件。 开发人员认为创建解决方案
如果没有破坏现有代码或导致性能问题,“[...] 是不可能的。”
如果这对任何人来说都是一种挑战,那么您可以通过发布解决方案来证明自己是错的。
详细说明可在Dave Methvin对jQuery's issue #2476的答案中找到。