我可以使用jQuery .trigger()和addEventListener()添加的事件侦听器吗?

时间:2014-08-12 04:28:14

标签: javascript jquery events

在我的(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()接收事件吗?

1 个答案:

答案 0 :(得分:4)

简单回答

,你不能。

解释

主要原因是jQuery需要跨多个浏览器工作......

  

“[...] jQuery的事件系统是DOM事件系统顶层的一层。”

尽管存在异常,但由于{{1>}方法缺少,jQuery无法知道浏览器当前支持哪些事件。 开发人员认为创建解决方案

  如果没有破坏现有代码或导致性能问题

“[...] 是不可能的。”

如果这对任何人来说都是一种挑战,那么您可以通过发布解决方案来证明自己是错的。

详细说明可在Dave MethvinjQuery's issue #2476的答案中找到。