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 相关文章推荐
javascript网页关闭时提醒效果脚本
Oct 22 Javascript
用js实现输入提示(自动完成)的实例代码
Jun 14 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
Jan 23 Javascript
javascript制作坦克大战全纪录(2)
Nov 27 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
深入浅析JavaScript中对事件的三种监听方式
Sep 29 Javascript
Easyui form combobox省市区三级联动
Jan 13 Javascript
Angularjs自定义指令Directive详解
May 27 Javascript
vue自定义filters过滤器
Apr 26 Javascript
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
js实现通过开始结束控制的计时器
Feb 25 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&amp;java(三)
2006/10/09 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
List Installed Hot Fixes
2007/06/12 Javascript
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
使用Firebug对js进行断点调试的图文方法
2011/04/02 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
20个最新的jQuery插件
2012/01/13 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
分享经典的JavaScript开发技巧
2015/11/21 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
[02:26]2018DOTA2亚洲邀请赛赛前采访-Newbee篇
2018/04/03 DOTA
一个Python最简单的接口自动化框架
2018/01/02 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python如何使用正则表达式爬取京东商品信息
2020/06/01 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
房地产开发项目建议书
2014/05/16 职场文书
村创先争优活动总结
2014/08/28 职场文书
2014财务年度工作总结
2014/11/11 职场文书
2015年加油站工作总结
2015/05/13 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
python数字图像处理实现图像的形变与缩放
2022/06/28 Python
教你nginx跳转配置的四种方式
2022/07/07 Servers