Jquery 快速构建可拖曳的购物车DragDrop


Posted in Javascript onNovember 30, 2009

这样一来,购买者只需要把自己感兴趣的商品拖曳到自己的购物车中,也可以从购物车中删除商品 同时更新购物车的总体价格和数量。
那咱们就开始实例吧,本实例并没有链接数据库读取数据来初始化Products,而是创建了一些虚拟的商品如下:
1、 创建Product实体类

public class Product 
{ 
public string Code { get; set; } 
public string Name { get; set; } 
public string Description { get; set; } 
public double Price { get; set; } 
} 
[code] 
2、 构建商品List<Product> 
[code] 
public class Product 
{ 
public string Code { get; set; } 
public string Name { get; set; } 
public string Description { get; set; } 
public double Price { get; set; } 
}

3、创建DataList并绑定List<Product>
<asp:DataList ID="dlProducts" RepeatColumns="3" 
RepeatDirection="Horizontal" runat="server"> 
<ItemTemplate> 
<div class="productItemStyle" price='<%# Eval("Price") %>' 
code='<%# Eval("Code") %>' id='item_<%# Container.ItemIndex + 1 %>'> 
<li> 
<%# Eval("Code") %> 
</li> 
<li> 
<%# Eval("Name") %> 
</li> 
<li> 
<%# Eval("Description") %> 
</li> 
<li> 
$<%# Eval("Price") %> 
</li> 
</div> 
</ItemTemplate> 
</asp:DataList> 
private void BindData() 
{ 
var products = GetProducts(); 
dlProducts.DataSource = products; 
dlProducts.DataBind(); 
}

productItemStyle 样式名称
Container.ItemIndex动态生成连续的商品编号
Jquery 快速构建可拖曳的购物车DragDrop
4、 生成Products Div Draggable
下载最新的Jquery JS文件及其UI文件:
<script language="javascript" type="text/javascript" src="jquery-1.2.6.min.js"></script> 
<script language="javascript" type="text/javascript" 
src="jquery-ui-personalized-1.6rc4.min.js"></script>

页面初始化时生成Div Draggable
$(document).ready(function() { 
$(".productItemStyle").draggable({ helper: "clone", opacity: "0.5" }); 
)};

5、创建一个DropZone
DropZones 是购物车区域
$(".dropZone").droppable( 
{ 
accept: ".productItemStyle", 
hoverClass: "dropHover", 
drop: function(ev, ui) { 
var droppedItem = ui.draggable.clone().addClass("droppedItemStyle"); 
var productCode = droppedItem[0].attributes["code"].nodeValue; 
var productPrice = 
getFormattedPrice(droppedItem[0].attributes["price"].nodeValue); 
var removeLink = document.createElement("a"); 
removeLink.innerHTML = "Remove"; 
removeLink.className = "deleteLink"; 
removeLink.href = "#"; 
removeLink.onclick = function() 
{ 
$(".dropZone").children().remove("#" + droppedItem[0].id); 
updateTotal(productPrice * (-1)); 
} 
droppedItem[0].appendChild(removeLink); 
$(this).append(droppedItem); 
updateTotal(productPrice); 
} 
} 
);

Accept参数:展示Class= “productItemStyle”的Div
hoverClass参数:当有Product放到DropZone时的样式
drop函数:当Product拖放到DropZone时出发的函数,此函数主要做了一个Product Item的Clone,价格的计算、添加Remove按钮以及到点击Remove按钮时所触发的事件。
价格的计算updateTotal()函数
// update the total! 
function updateTotal(price) { 
total += parseFloat(price); 
$("#total").html(total.toFixed(2)); 
$(".shoppingCartTotal").effect("bounce"); 
}

最终效果如下图:
Jquery 快速构建可拖曳的购物车DragDrop
英文原文地址:http://www.codeproject.com/KB/aspnet/JQueryShoppingCart.aspx
Javascript 相关文章推荐
关于jquery append() html时的小问题的解决方法
Dec 16 Javascript
ToolTips JQEURY插件之简洁小提示框效果
Nov 19 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
May 23 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
javascript中this的四种用法
May 11 Javascript
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
Jul 03 Javascript
vue 优化CDN加速的方法示例
Sep 19 Javascript
一步步教你利用Docker设置Node.js
Nov 20 Javascript
vue实现直播间点赞飘心效果的示例代码
Sep 20 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
Aug 18 Javascript
Vue指令实现OutClick的示例
Nov 16 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
Nov 30 #Javascript
Ruffy javascript 学习笔记
Nov 30 #Javascript
jquery 分页控件实现代码
Nov 30 #Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
Nov 30 #Javascript
Aptana调试javascript图解教程
Nov 30 #Javascript
jQuery chili图片远处放大插件
Nov 30 #Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 #Javascript
You might like
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
2006/10/09 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
php报错502badgateway解决方法
2019/10/11 PHP
Jquery 表格合并的问题分享
2011/09/17 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
python连接mysql实例分享
2016/10/09 Python
Python3匿名函数用法示例
2018/07/25 Python
在python中画正态分布图像的实例
2019/07/08 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
高级电工工作职责
2013/11/21 职场文书
市场部管理制度
2014/02/02 职场文书
文明风采获奖感言
2014/02/18 职场文书
秋季运动会广播稿
2014/02/22 职场文书
安全生产承诺书范文
2014/05/22 职场文书
政工例会汇报材料
2014/08/26 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
Python中可变和不可变对象的深入讲解
2021/08/02 Python