2013-05-14 3 views
0

У меня есть корзина со списком товаров в массиве корзины. Когда один удаляется, он обновляет корзину через ajax, однако номер элемента в массиве для каждого элемента корзины покупок не обновляется, если страница не обновляется.ajax обновление элемента класса

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

$ i указывает количество в массиве. Если элемент удален, это может повлиять на порядок массива, поэтому я хочу обновить $ i для каждого класса.

Вместо того, чтобы выводить содержимое всей корзины, есть простой способ просто обновить элемент для каждого класса. Это можно сделать довольно легко, с $ i = 0 и i ++ для каждого элемента в массиве корзины покупок.

ОБНОВЛЕНИЕ:

$('.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

Это не похоже на правильный подход. Возможно, ваше значение этого ввода должно быть ссылочным идентификатором элемента, а не его позицией в индексе, поскольку это может привести к отключению, как вы пришли посмотреть. –

ответ

0

Чтобы изменить значение, основанное на классе, попробуйте

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

Класс обычно относится к нескольким элементам, группу вместе. Если у вас есть другой элемент в том же классе, для него также будет применено изменение значения.

+0

так на стороне клиента Я хочу обновить эти значения при щелчке. Так что это было бы что-то вроде '$ i = 0; foreach ('. Remove_cart_id.) { $ (this) .val() = $ i; $ i ++ } ' Это имеет смысл? Не знаете, как правильно закодировать код jquery, или если он будет работать. – Source

+0

Я бы с var i = 0; $ ('. Remove_cart_id'). Each (function() { $ (this) .val (i); i ++; } Javascript не использует '$'. Вы можете смутить его с помощью PHP. :) – A23

+0

Извините, да, я думаю, php, пытаясь научиться jquery. – Source

0

Предполагая, что вы должны повторно проиндексировать значения

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

Или, вам нужно уменьшить значение?

+0

Мне просто нужно пересчитать элементы по их заказу в корзине. – Source

+1

, затем вызовите выше предоставленную функцию reindexCart() после удаления элемента. Надеюсь, это решит вашу проблему –

Смежные вопросы