Корзина покупок на jQuery
Всем привет
Начал прикручивать корзину для сайта по примеру отсюда Немного встрял со следующей задачей: необходимо, чтобы по клику добавлялись товары, а не благодаря перетаскиванию. пробовал добавить что-то вроде: $(function() { $('.items li').click(function(event, ui) { var basket = $('.basket'), move = $(this), itemId = basket .find("ul li[data-id='"+ move.attr("data-id")+ "']"); // далее идёт стандартный if-else для добавления и код для удаления из примера не работает... Прошу вашей профессиональной помощи, так как сам совсем ещё новичок в этом языке. |
мало информации
|
дык http://xozblog.ru/2013/01/jquery-drag-n-drop-cart/ - здесь же всё написано. есть смысл весь код переписывать?
|
вы хотите чтобы вам помогли? у некоторых нет (например у меня) нет доступа на левые сайты
|
как-то так оно выглядит
<section id="product"> <ul class="clear"> <li data-id="1"> <a href="#"> <img src="http://lorempixel.com/150/100/technics/1/" alt=""> <h3>Название товара</h3> <p>Описание</p> </a> </li> <li data-id="2">...</li> <li data-id="3">...</li> </ul> </section> <aside id="sidebar"> <div class="basket"> <div class="basket_list"> <div class="head"> <span class="name">Наименование</span> <span class="count">Кол-во</span> </div> <ul> <!-- Здесь будут располагаться позиции перемещенных товаров --> </ul> </div> </div> </aside> $(function () { // jQuery UI Draggable $("#product li").draggable({ // возвращает товар обратно на свое место после перетаскивания revert:true, // как только начинается перетаскивание мы делаем прозрачными остальные объекты // добавляем класс CSS drag:function () { $(this).addClass("activebasket"); $(this).closest("#product").addClass("activebasket"); }, // удаляем CSS класс после перетаскивания stop:function () { $(this).removeClass("activebasket").closest("#product").removeClass("activebasket"); } }); // jQuery Ui Droppable $(".basket").droppable({ // CSS класс для корзины, срабатывает в момент начала перетаскивания товара activeClass:"activebasket", // CSS класс для корзины при появлении товара в области корзины hoverClass:"hover", // Определим режим сбрасывания. Сбросить товар можно при приближении к корзине // Возможные другие значения [url]http://api.jqueryui.com/droppable/#option-tolerance[/url] tolerance:"touch", drop:function (event, ui) { var basket = $(this), move = ui.draggable, itemId = basket.find("ul li[data-id='" + move.attr("data-id") + "']"); // Если такой товар уже есть в корзине то добавляем +1 к количеству if (itemId.html() != null) { itemId.find("input").val(parseInt(itemId.find("input").val()) + 1); } else { // Иначе добавляем товар в корзину (функция ниже) addBasket(basket, move); // И добавляем количество move.find("input").val(parseInt(move.find("input").val()) + 1); } } }); // Эта функция добавляет новый элемент списка в корзину function addBasket(basket, move) { basket.find("ul").append('<li data-id="' + move.attr("data-id") + '">' + '<span class="name">' + move.find("h3").html() + '</span>' + '<input class="count" value="1" type="text">' + '<button class="delete">✕</button>'); } // Функция для удаления товара из списка $(".basket ul li button.delete").live("click", function () { $(this).closest("li").remove(); }); }); |
пробуйте вот так
$(function() { $('#product li').click(function(event, ui) { addBasket($('.basket'), $(this)) }); |
Если правильно понял, то вставить это нужно вместо:
tolerance:"touch", drop:function (event, ui) { var basket = $(this), move = ui.draggable, itemId = basket.find("ul li[data-id='" + move.attr("data-id") + "']"); |
нет, я же так понял вам нужен обработчик на клик так что это надо ставить отдельно
|
Надо же)) заработало! Спасибо вам, в очередной раз меня выручаете!
|
Часовой пояс GMT +3, время: 07:00. |