2015-07-10 47 views
0

我有一個小腳本,應該在我的頁面上更新購物車的數量,如果產品被添加或減去。這似乎不是要當我加入購物車項目,提交的量變化工作,但它確實如果我刷新頁面:當我的購物車輸入字段更新時,jquery.change()不起作用

(function($){ 
    jQuery(".hikashop_cart_module input.hikashop_product_quantity_field").change(function(){ 
     var sum = 0; 
     $(".hikashop_cart_module input.hikashop_product_quantity_field").each(function(){ 
      sum += +$(this).val(); 
     }).change(); 
     $("#total").text(sum); 
    }); 
})(jQuery); 
+0

當您離開輸入字段時會觸發'change'。此外,您將'.change()'(觸發器)添加到'.each',而不是事件處理程序。那是需要發生的嗎? – putvande

回答

0

你在你選擇了一個錯誤。你應該使用這個:

(function($){ 
    jQuery(".hikashop_cart_module.input.hikashop_product_quantity_field").change(function(){ 
     var sum = 0; 
     $(".hikashop_cart_module.input.hikashop_product_quantity_field").each(function(){ 
      sum += +$(this).val(); 
     }) 
     $("#total").text(sum); 
    }); 
})(jQuery); 

還有就是與each環由.change()事件處理以下問題。它正在創造無限循環的事件發射。我製作了一個fiddle,這樣你就可以看到正在運行的工作版本!

1

您的代碼中存在一些錯誤。與此相比較:

(function($){ 
    // if you load your elements dynamically you need to use delegated events 
    $(document).on('change', '.hikashop_cart_module input.hikashop_product_quantity_field', function(){ 
     var sum = 0; 
     $(this).each(function(){ 
      sum += +$(this).val(); 
     }); 
     $("#total").text(sum); 
    }); 
})(jQuery); 
+0

我認爲問題在於,當用戶退出輸入字段時會觸發change(),在我的情況下,用戶只是使用添加到購物車按鈕,並且購物車輸入字段被嵌入購物車中的ajax腳本更改零件。有關如何處理這個問題的任何建議? –

+0

然後你需要使用一個委託事件,檢查[這篇文章](http://learn.jquery.com/events/event-delegation/)。我更新了我的答案。 – kosmos

相關問題