在我的(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()接收事件吗?
不,你不能。
主要原因是jQuery需要跨多个浏览器工作,并且...
“ [...] jQuery的事件系统是DOM事件系统之上的一层。”
Eventhough也有例外,有jQuery的知道哪些事件是由目前的浏览器由于不支持任何有效的方法,缺乏一个的getEventListeners
方法。开发人员认为创建解决方案
“ [...]不破坏现有代码或不会导致性能问题是不可能的。”
如果这听起来像是对任何人的挑战,您都可以通过发布解决方案来证明他们是错误的。
详细的解释可以在Dave Methvin对jQuery#2476的回答中找到。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句