2013-05-14 64 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