Я пытаюсь создать интерактивную корзину покупок с помощью jQuery, но проблема сращивания разрушила все, потому что, когда я удаляю элемент напрямую, он отлично работает для меня, но чем я буду динамически меняться, t удаляет случайные элементы в массиве даже после индексов обновлений.Проблема с удалением случайных элементов в javascript
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<div id="myDIV2"></div>
<div id="myDIV"></div>
<script>
var wishlistArray = ["Item1", "Item2", "Item3", "Item4", "Item5"];
function wishlist_show() {
var wishlistArrayDom = "";
jQuery.each(wishlistArray, function (i, wishlistID) {
wishlistArrayDom += '<div><a href="javascript:;" class="rem-from-wishlist" value="' + i + '">Remove(' + wishlistID + ')</a></div>';
});
$('#myDIV').empty();
$('#myDIV').html(wishlistArrayDom);
wishlist_update_rem();
console.log('All: ' + wishlistArray.length);
console.log('Arr: ' + wishlistArray);
}
function wishlist_rem(num) {
console.log('Value: ' + $(this).attr('value'));
console.log('All: ' + wishlistArray.length);
console.log('Arr: ' + wishlistArray);
$(this).parent().slideUp("slow", function() {
console.log(wishlistArray.splice($(this).attr('value'), 1));
wishlist_show();
});
$('#myDIV2').append('<br>Remove ' + wishlistArray[parseInt($(this).attr('value'))] + ' of element' + +$(this).attr('value'));
}
wishlist_show();
function wishlist_update_rem() {
$(".rem-from-wishlist").unbind("click");
$(".rem-from-wishlist").click(wishlist_rem);
}
</script>
Jsfiddle пример
UPDATE: решаемые себе, спасибо всем, StackOverflow лучше.
Готов использоваться jsfiddle http://jsfiddle.net/ar0zrxwc/
нет никакой проблемы, если вы звоните в функции wishlist_show(); вы пересказываете индексы для значений и создаете иллюзию, что сращивание не работает, но оно ... и удаляет правильный элемент, комментирует эту строку, и вы увидите ожидаемое поведение, однако вы должны обрабатывать новый размер array .. вы должны динамически обнаруживать индекс щелкнутого элемента – rahpuser
@rahpuser, это не то, что происходит, см. мой ответ. – Paul
@Пауль вы правы – rahpuser