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 this关键字的问题
Jan 09 Javascript
javascript DOM编程实例(智播客学习)
Nov 23 Javascript
JS中的this变量的使用介绍
Oct 21 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
原生JavaScript实现异步多文件上传
Dec 02 Javascript
基于canvas实现的绚丽圆圈效果完整实例
Jan 26 Javascript
移动端js触摸事件详解
Sep 18 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
Nov 30 Javascript
D3.js中强制异步文件读取同步的几种方法
Feb 06 Javascript
vue路由拦截器和请求拦截器知识点总结
Nov 08 Javascript
js实现拖拽与碰撞检测
Sep 18 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP 命令行参数详解及应用
2011/05/18 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
PHP文件上传小程序 适合初学者学习!
2019/05/23 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
简单学习vue指令directive
2016/11/03 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
基于JS实现视频上传显示进度条
2020/05/12 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python函数的周期性执行实现方法
2016/08/13 Python
python制作websocket服务器实例分享
2016/11/20 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
python 实现识别图片上的数字
2019/07/30 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
外贸英语毕业生自荐信
2013/11/14 职场文书
行政总监岗位职责
2013/12/05 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
教师职称自我鉴定
2014/02/12 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
2014年法务工作总结
2014/12/11 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书