簡體   English   中英

ajaxComplete多次激活 - woocommerce加入購物車

[英]ajaxComplete firing multiple times - woocommerce add to cart

我想在WooCommerce中將特定產品添加到購物車時發出警報窗口。 為此,我將添加一個單擊功能到添加到購物車按鈕,該按鈕在ajaxComplete上觸發。 但是,ajaxComplete似乎會多次觸發它。 我怎么能阻止這個?

jQuery('#bvbutton').click(function() {
  jQuery( document ).ajaxComplete(function() {
    alert("testing!");
  });
});

編輯:這里的每個請求是一個更徹底的解釋:ajax調用是從WooCommerce內部進行的,我不想編輯它。 我想要做的是給特定產品的按鈕一個唯一的ID,並點擊一個具有此ID的按鈕觸發一個警告框。

重點是來自特定類別a內的物品應該對b類產品提供10%的折扣。 從類別a添加產品時,警報框應該觸發並通知類別b的折扣。 因此,我為這些按鈕指定了一個特定的ID,並希望針對這些ID創建一個點擊事件。 點擊后,我需要等待ajax調用,將項目添加到購物車,然后點火警告框。

希望現在有意義

$.ajaxComplete是全局的。 此處理程序將被調用多次添加到所有AJAX請求中。 在您的情況下,每次單擊#bvbutton全局添加另一個處理程序實例。

相反,在DOM ready事件中添加一次處理程序。 不是任何特定的點擊事件。

$(function() {
  jQuery( document ).ajaxComplete(function() {
    alert("testing!");
  });
});

就個人而言,我不會這樣做,因為這會影響你所做的所有AJAX操作。 當特定的AJAX過程成功時,我更傾向於使用trigger來觸發自定義事件。 通過這種方式,您可以更准確地了解警報何時消失。 這是一個例子:

jQuery(document).on('product-added', function () {
  console.log('Product added');
});

jQuery('#bvbutton').click(function() {
  jQuery.ajax({
     url: endpoint,
     type: 'POST',
     ...
   }).success(function (data) {
     // process data
     jQuery(document).trigger('product-added');
   });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM