2013-05-14 94 views
0

我有一個購物車,其中包含購物車數組中的物品列表。當一個人被刪除時,它會通過ajax更新購物車,但是,除非刷新頁面,否則每個購物車項目的數組中的項目編號都不會更新。更新類元素的ajax

<input class="remove_cart_id" type="hidden" value="'.$i.'" /> 

的$ i表示在陣列中的數量。如果一個項目被刪除,這可能會影響數組的順序,所以我想爲每個類更新$ i。

有沒有一種簡單的方法來更新每個類的元素,而不是輸出整個購物車的內容。它可以很容易地完成,$ i = 0和i ++用於購物車數組中的每個項目。

UPDATE:

$('.remove_cart_item').click(function(){ 
$(this).parent().stop(true, true).fadeOut(); 
var pid = $('.remove_cart_id', this).val(); 
$.ajax({   
    type : 'POST', 
    url  : 'ajax/remove-cart.php', 
    data : 'pid='+pid, 
    success : function(data) { 
     $('#cart_quantity').html(data); 
    } 
}); 
// update cart array 
var i = 0; 
$('.remove_cart_id').each(function(){ 
    $(this).val(i); 
    i++; 
}; 

});

我現在正在使用此代碼,但似乎有代碼停止工作的每個函數的某種錯誤。

+1

這聽起來不像是正確的方法。也許你的輸入值應該是項目的引用ID,而不是它在索引中的位置,因爲這可能會引起斷開連接,正如你所看到的。 – 2013-05-14 00:36:56

回答

0

要改變基於所述類別值,嘗試

$(".classname").each(function() { 
    $(this).val('change'); 
}); 

類通常適用於多個元件是組在一起。如果你在同一個類中有另一個元素,那麼值的改變也會被應用。

+0

所以在客戶端我想點擊更新這些值。 所以它會像 '$ i = 0; ('。remove_cart_id。){ $(this).val()= $ i; $ i ++ }' 這有道理嗎?不知道如何在jquery中正確編寫代碼,或者如果它能工作。 – Source 2013-05-14 00:51:03

+0

我會用 var i = 0; ('。remove_cart_id')。each(function(){ $(this).val(i); i ++; } Javascript不使用'$'。您可能會將它與PHP混淆。 – A23 2013-05-14 00:54:35

+0

對不起,是的,我認爲PHP,試圖學習jQuery仍然。 – Source 2013-05-14 00:59:44

0

假設你需要重新索引值

function reindexCart(){ 
    var count = 0; 
    $('.remove_cart_id').each(){ 
    $(this).val(count); 
    count++; 
    } 
} 

或者,你需要減少數值?

+0

我只需要根據購物車中的訂單重新編號。 – Source 2013-05-14 00:56:36

+1

然後在移除項目後再調用上面提供的reindexCart()函數。希望這會解決你的問題 – 2013-05-14 00:59:17