Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2013, 09:18
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

Корзина покупок на 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 для добавления и код для удаления из примера


не работает...

Прошу вашей профессиональной помощи, так как сам совсем ещё новичок в этом языке.
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2013, 09:25
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

мало информации
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2013, 09:46
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

дык http://xozblog.ru/2013/01/jquery-drag-n-drop-cart/ - здесь же всё написано. есть смысл весь код переписывать?
Ответить с цитированием
  #4 (permalink)  
Старый 18.07.2013, 09:49
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

вы хотите чтобы вам помогли? у некоторых нет (например у меня) нет доступа на левые сайты
Ответить с цитированием
  #5 (permalink)  
Старый 18.07.2013, 10:18
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

как-то так оно выглядит

<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">&#10005;</button>');
		}
        // Функция для удаления товара из списка 
        $(".basket ul li button.delete").live("click", function () {
			$(this).closest("li").remove();
		});
    });
Ответить с цитированием
  #6 (permalink)  
Старый 18.07.2013, 10:31
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

пробуйте вот так
$(function() {
$('#product li').click(function(event, ui) {
   addBasket($('.basket'), $(this))
});
Ответить с цитированием
  #7 (permalink)  
Старый 18.07.2013, 10:49
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

Если правильно понял, то вставить это нужно вместо:

tolerance:"touch",
drop:function (event, ui) {
var basket = $(this),
move = ui.draggable,
itemId = basket.find("ul li[data-id='" + move.attr("data-id") + "']");
Ответить с цитированием
  #8 (permalink)  
Старый 18.07.2013, 11:02
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

нет, я же так понял вам нужен обработчик на клик так что это надо ставить отдельно
Ответить с цитированием
  #9 (permalink)  
Старый 18.07.2013, 11:05
Аспирант
Отправить личное сообщение для pifon Посмотреть профиль Найти все сообщения от pifon
 
Регистрация: 17.07.2013
Сообщений: 46

Надо же)) заработало! Спасибо вам, в очередной раз меня выручаете!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
Корзина на jquery lericen jQuery 4 07.07.2010 06:20
jQuery jTreeMenu plugin Seafnox jQuery 9 12.01.2010 21:55
JQuery + FireFox NOOB jQuery 4 02.11.2009 18:16