2016-07-07 83 views
0

我有一個代碼片段來追蹤三次點擊添加到購物車按鈕。爲什麼這個函數發射三次?

如果您感到困惑,爲什麼我這樣寫了它,它就在彈出的「快速瀏覽」模式中。

準確地說 - 這部分的每次點擊射擊三次:

$(".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); 
    }); 
}); 
+3

你有多少'$(「。quickview_btn」)?三? – DaniP

+0

將調用'onComplete'事件多少次? – plalx

+2

我會推薦使用事件代理(如果在連接colorbox之前'(「.qlBtns」)'元素不存在)綁定您的單擊事件處理程序。在另一個事件處理程序中綁定事件處理程序永遠不是一個好主意。 – empiric

回答

1

你應該綁定事件

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

只有一次讓它觸發一次,因爲你是有約束力的前夕nt在另一個功能未完成回調,有可能是事件綁定不止一次。你應該在外面做這個綁定。 colorbox功能。如果你不能這樣做,我會建議你通過使用下面的代碼解除綁定和綁定事件。

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