Tec*_*mad 2 javascript jquery event-handling dom-events woocommerce
我需要听 WooCommerce 的自定义事件,例如wc_fragment_refresched或added_to_cart。但是,当通过本机为这些事件创建侦听器时,addEventListener什么也没有发生。但 jQuery.on()工作得很好。
在职的:
jQuery(document.body).on('wc_fragments_refreshed', function() {
  console.log("hehey!");
});
不工作:
document.body.addEventListener('wc_fragments_refreshed', function() {
  console.log("hoho!");
});
有谁知道为什么本地监听器不工作?
区别是因为addEventListener()不监听 jQuery 触发的事件。要引发该事件处理程序,您需要使用dispatchEventon document.body。
下面是一个例子。请注意,jQuery 会触发两次,因为它确实处理两个事件触发器。
// jQuery
$(document.body).on('wc_fragments_refreshed', function() {
  console.log("jQuery handled the event");
}).trigger('wc_fragments_refreshed');
// Native
document.body.addEventListener('wc_fragments_refreshed', function() {
  console.log("POJS handled the event");
});
document.body.dispatchEvent(new Event('wc_fragments_refreshed'));<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>