首页 > 解决方案 > 如果两者都被触发,两个事件监听器单个功能仍然只有一个调用?

问题描述

我希望我的代码监听这两个事件,但我不想触发两次,也不想调用两次动作。因为实际上它是相同的动作,但我认为 prestashop.on('updateCart' 侦听器不会在某些浏览器上触发。我不知道,因此我看到缺少数据..您可以认为

如果它触发了 prestashop.on('updateCart' OR $( "#addtocart" ).on( "click" => 调用函数

    prestashop.on('updateCart', function(params) {
addtocartpixelfunction();
    });
$( "#addtocart" ).on( "click", function() {
  addtocartpixelfunction();
});

标签: javascriptjqueryprestashop

解决方案


我想这样的事情应该有效。添加一个哨兵变量以避免重复调用该函数:


let sentinel = 0;

prestashop.on('updateCart', function(params) {
    if (sentinel === 1 || !sentinel) {
        sentinel = 1;
        addtocartpixelfunction();
    }
});
$( "#addtocart" ).on( "click", function() {
    if (sentinel === 2 || !sentinel) {
        sentinel = 2;
        addtocartpixelfunction();
    }
});

推荐阅读