为什么这个功能会发射三次?

时间:2016-07-07 17:17:07

标签: javascript jquery

我有一个代码段来跟踪添加到购物车按钮的点击次数三次。

它在弹出窗口内快速查看'莫达尔如果你感到困惑,为什么我这样写呢。

准确地说 - 这部分每次点击都会发射三次:

$(".qlBtns").one("click", function() {

  mboxDefine('dynamicElement5', 'QuickViewAddToCartClicked');
  mboxUpdate('QuickViewAddToCartClicked', 'Clicked=Yess');

});

以下完整代码段:

$(document).ready(function() {
  $(".quickview_btn").click(function() {

    var quickview_url = $(this).attr("href");
    var qvURL = $(this).attr("href");

    $(".quickview_btn").colorbox({
      href: qvURL,
      opacity: 0.6,
      onComplete: function() {

        $(".qlBtns").one("click", function() {
          mboxDefine('dynamicElement5', 'QuickViewAddToCartClicked');
          mboxUpdate('QuickViewAddToCartClicked', 'Clicked=Yess');
        });

      }
    });

    mboxDefine('dynamicElement', 'QuickViewPLPclicked');
    mboxUpdate('QuickViewPLPclicked', 'paramURL=' + quickview_url);
  });
});

1 个答案:

答案 0 :(得分:1)

你应该绑定事件

$(".qlBtns").off("click").on("click", function() {});

只有一次触发一次,因为你在另一个函数 oncomplete 回调中绑定了事件,事件可能是多次绑定。您应该在。 colorbox 功能之外进行此绑定。如果您不能这样做,我建议您使用以下代码解除绑定并绑定事件。

{{1}}