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 相关文章推荐
详细讲解JS节点知识
Jan 31 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
Oct 11 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
js倒计时小程序
Nov 05 Javascript
javascript表单验证和Window详解
Dec 11 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
Aug 22 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
May 24 Javascript
JS重载实现方法分析
Dec 16 Javascript
layer弹出层父子页面事件相互调用方法
Aug 17 Javascript
React父子组件间的传值的方法
Nov 13 Javascript
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
对vuex中getters计算过滤操作详解
Nov 06 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
PHP答题类应用接口实例
2015/02/09 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
javascript 闭包详解
2015/02/15 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
js实现录音上传功能
2019/11/22 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
python 默认参数相关知识详解
2019/09/18 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
python代码实现猜拳小游戏
2020/11/30 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
医务人员自我评价
2014/01/26 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
律师授权委托书范本
2014/10/07 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
Golang Web 框架Iris安装部署
2022/08/14 Python