jQuery EasyUI Drag and Drop -Создание корзины покупок с перетаскиванием
Если вы можете просто реализовать перетаскивание в своем веб-приложении, вы узнаете нечто особенное. С jQuery EasyUI мы можем просто реализовать функциональность перетаскивания в веб-приложениях.
В этом руководстве мы покажем вам, как создать страницу корзины покупок, которая позволяет пользователям перетаскивать товары, которые они хотят купить. Товары и цены в корзине покупок будут обновляться.
Отображение товаров на странице
<ul class="products"> <li> <a href="../index.html" class="item"> <img src="images/shirt1.gif.html"/> <div> <p>Balloon</p> <p>Price:$25</p> </div> </a> </li> <li> <a href="../index.html" class="item"> <img src="images/shirt2.gif.html"/> <div> <p>Feeling</p> <p>Price:$25</p> </div> </a> </li> <!-- other products --> </ul>
Как видно из приведенного выше кода, мы добавляем элемент <ul>, содержащий несколько элементов <li>, для отображения товаров. Все товары имеют атрибуты name и price, которые содержатся в элементах <p>.
Создание корзины покупок
<div class="cart"> <h1>Shopping Cart</h1> <table id="cartcontent" style="width:300px;height:auto;"> <thead> <tr> <th field="name" width=140>Name</th> <th field="quantity" width=60 align="right">Quantity</th> <th field="price" width=60 align="right">Price</th> </tr> </thead> </table> <p class="total">Total: $0</p> <h2>Drop here to add to cart</h2> </div>
Мы используем таблицу данных (datagrid) для отображения товаров в корзине покупок.
Перетаскивание клонированных товаров
$('.item').draggable({
revert:true,
proxy:'clone',
onStartDrag:function(){
$(this).draggable('options').cursor = 'not-allowed';
$(this).draggable('proxy').css('z-index',10);
},
onStopDrag:function(){
$(this).draggable('options').cursor='move';
}
});
Обратите внимание, что мы изменили значение атрибута draggable с 'proxy' на 'clone', поэтому перетаскиваемый элемент будет создаваться клонированием.
Перетащите выбранные товары в корзину
$('.cart').droppable({
onDragEnter:function(e,source){
$(source).draggable('options').cursor='auto';
},
onDragLeave:function(e,source){
$(source).draggable('options').cursor='not-allowed';
},
onDrop:function(e,source){
var name = $(source).find('p:eq(0)').html();
var price = $(source).find('p:eq(1)').html();
addProduct(name, parseFloat(price.split('$')[1]));
}
});
var data = {"total":0,"rows":[]};
var totalCost = 0;
function addProduct(name,price){
function add(){
for(var i=0; i<data.total; i++){
var row = data.rows[i];
if (row.name == name){
row.quantity += 1;
return;
}
}
data.total += 1;
data.rows.push({
name:name,
quantity:1,
price:price
});
}
add();
totalCost += price;
$('#cartcontent').datagrid('loadData', data);
$('div.cart .total').html('Total: $'+totalCost);
}
Каждый раз, когда товар перетаскивается, мы сначала получаем название и цену товара, затем вызываем функцию 'addProduct' для обновления корзины.
Скачать примеры jQuery EasyUI
jeasyui-dd-shopping.zip
Другие расширения