Удаление товара из корзины

Добрый день

Есть проблема при удалении товара из корзины на сайте http://l1st.ru/ и она связана с темой дизайна.

Дело в следующем, стандартный скрипт удаления товара из корзины выглядит так:

<img style="width: 599px; height: 362.783px; float: right; margin: 0px 0px 10px 10px;" rel="width: 599px; height: 362.783px; float: right; margin: 0px 0px 10px 10px;" alt="" src="https://www.shop-script.ru/wa-data/public/hub/upload/images/2-6.jpg">

$(".cart a.delete").click(function () {
var tr = $(this).closest('tr');
$.post('delete/', {html: 1, id: tr.data('id')}, function (response) {
if (response.data.count == 0) {
location.reload();
}
tr.remove();
updateCart(response.data);
}, "json");
return false;
});

Это кусок из файла cart.js

По сути он удаляет строку с товаром и когда заказ оформляют на ПК или планшете, всё работает.

Но когда ширина экрана изменяется до размеров смартфона, то каждая строка разбивается на отдельную таблицу и имеет следующий вид:

<img style="width: 365px; height: 509.396px; float: left; margin: 0px 10px 10px 0px;" rel="width: 365px; height: 509.396px; float: left; margin: 0px 10px 10px 0px;" alt="" src="https://www.shop-script.ru/wa-data/public/hub/upload/images/1-13.jpg">

Соответственно в данном случае скрипт не работает и удаляется только строка "Удалить"

Подскажите, есть ли какое-то решение, т.к. на странице /compare/ реализовано такое же изменение таблицы, но всё работает.

Там вот такой скрипт:

$(".compare-remove").on('click', function () {
var compare = $.cookie('shop_compare');
if (compare) {
compare = compare.split(',');
} else {
compare = [];
}
var i = $.inArray($(this).data('product') + '', compare);
if (i != -1) {
compare.splice(i, 1)
}
if (compare) {
$.cookie('shop_compare', compare.join(','), { expires: 30, path: '/'});
} else {
$.cookie('shop_compare', null);
}
});

2 ответа

  • 1

    Возможно, вам стоит переписать HTML-разметку корзины и использовать стандартную функцию удаления:

    $(".cart a.delete").click(function () {

    var row = $(this).closest('div.row');

    $.post('delete/', {html: 1, id: row.data('id')}, function (response) {

    if (response.data.count == 0) {

    location.reload();

    }

    row.remove();

    updateCart(response.data);

    }, "json");

    return false;

    });


    Ваш текущий вариант просто удаляет ближайшую строку, что не совсем правильно.

    • +1

      У меня аналогичная проблема. Стандартный скрипт cart.js не менял. Верстку шаблона cart.html оставил как было в теме default. Нажимаю на удаление из корзины, но не удаляется. Подскажите, может, кроме cart.js что-то еще должно быть? Спасибо

Добавить ответ

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