为什么jQuery';s.on()可以工作,但本机JavaScript';s.addEventListener()不';T

为什么jQuery';s.on()可以工作,但本机JavaScript';s.addEventListener()不';T,javascript,jquery,woocommerce,event-handling,dom-events,Javascript,Jquery,Woocommerce,Event Handling,Dom Events,我需要收听WooCommerce的自定义事件,如重新录制的wc\u fragment\u或added\u to\u cart。但是,当通过本机addEventListener为这些事件创建侦听器时,什么都不会发生。但是jQuery的.on()工作正常 工作: jQuery(document.body).on('wc\u fragments\u refreshed',function(){ console.log(“嘿嘿!”); }); 不工作: document.body.addEventLi

我需要收听WooCommerce的自定义事件,如重新录制的
wc\u fragment\u
added\u to\u cart
。但是,当通过本机
addEventListener
为这些事件创建侦听器时,什么都不会发生。但是jQuery的
.on()
工作正常

工作:

jQuery(document.body).on('wc\u fragments\u refreshed',function(){
console.log(“嘿嘿!”);
});
不工作:

document.body.addEventListener('wc\u fragments\u refreshed',function(){
console.log(“hoho!”);
});

有人知道本机侦听器为什么不工作吗?

区别在于
addEventListener()
不侦听jQuery触发的事件。要引发该事件处理程序,您需要在
document.body
上使用
dispatchEvent

下面是一个例子。请注意,jQuery触发两次,因为它处理两个事件触发器

//jQuery
$(document.body).on('wc\u fragments\u refreshed',function(){
log(“jQuery处理了事件”);
}).trigger(“wc_碎片_刷新”);
//土生土长的
document.body.addEventListener('wc\u fragments\u refreshed',function(){
log(“POJS处理了事件”);
});
document.body.dispatchEvent(新事件('wc_fragments_refreshed')