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 相关文章推荐
extjs 学习笔记(一) 一些基础知识
Oct 13 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
Dec 07 Javascript
第一个JavaScript入门基础 document.write输出
Feb 22 Javascript
封装的原生javascript弹出层代码
Sep 24 Javascript
javascript学习笔记(四) Number 数字类型
Jun 19 Javascript
Jquery post传递数组方法实现思路及代码
Apr 28 Javascript
JavaScript实现MIPS乘法模拟的方法
Apr 17 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 Javascript
package.json文件配置详解
Jun 15 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 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判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
2015/11/24 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
python实现apahce网站日志分析示例
2014/04/02 Python
python统计一个文本中重复行数的方法
2014/11/19 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python表示矩阵的方法分析
2017/05/26 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
python和c语言哪个更适合初学者
2020/06/22 Python
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
简历的自我评价
2014/02/03 职场文书
冰雪公主观后感
2015/06/16 职场文书
大学同学聚会感言
2015/07/30 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL